Cleaning up some more use of the old message string "content" to use "msg" email object instead.
This commit is contained in:
parent
1d2478bcb6
commit
49b6c30ace
@ -370,7 +370,7 @@ class BaseFolder:
|
|||||||
return len(self.getmessagelist())
|
return len(self.getmessagelist())
|
||||||
|
|
||||||
def getmessage(self, uid):
|
def getmessage(self, uid):
|
||||||
"""Returns the content of the specified message."""
|
"""Returns and email message object."""
|
||||||
|
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
@ -30,13 +30,6 @@ CRLF = '\r\n'
|
|||||||
MSGCOPY_NAMESPACE = 'MSGCOPY_'
|
MSGCOPY_NAMESPACE = 'MSGCOPY_'
|
||||||
|
|
||||||
|
|
||||||
# NB: message returned from getmessage() will have '\n' all over the place,
|
|
||||||
# NB: there will be no CRLFs. Just before the sending stage of savemessage()
|
|
||||||
# NB: '\n' will be transformed back to CRLF. So, for the most parts of the
|
|
||||||
# NB: code the stored content will be clean of CRLF and one can rely that
|
|
||||||
# NB: line endings will be pure '\n'.
|
|
||||||
|
|
||||||
|
|
||||||
class IMAPFolder(BaseFolder):
|
class IMAPFolder(BaseFolder):
|
||||||
def __init__(self, imapserver, name, repository, decode=True):
|
def __init__(self, imapserver, name, repository, decode=True):
|
||||||
# decode the folder name from IMAP4_utf_7 to utf_8 if
|
# decode the folder name from IMAP4_utf_7 to utf_8 if
|
||||||
@ -400,7 +393,7 @@ class IMAPFolder(BaseFolder):
|
|||||||
# mails with identical content, the randomness requirements are
|
# mails with identical content, the randomness requirements are
|
||||||
# not extremly critial though.
|
# not extremly critial though.
|
||||||
|
|
||||||
# Compute unsigned crc32 of 'content' as unique hash.
|
# Compute unsigned crc32 of 'msg' (as bytes) into a unique hash.
|
||||||
# NB: crc32 returns unsigned only starting with python 3.0.
|
# NB: crc32 returns unsigned only starting with python 3.0.
|
||||||
headervalue = '{}-{}'.format(
|
headervalue = '{}-{}'.format(
|
||||||
(binascii.crc32(msg.as_bytes(policy=output_policy)) & 0xffffffff),
|
(binascii.crc32(msg.as_bytes(policy=output_policy)) & 0xffffffff),
|
||||||
@ -654,10 +647,8 @@ class IMAPFolder(BaseFolder):
|
|||||||
# Filter user requested headers before uploading to the IMAP server
|
# Filter user requested headers before uploading to the IMAP server
|
||||||
self.deletemessageheaders(msg, self.filterheaders)
|
self.deletemessageheaders(msg, self.filterheaders)
|
||||||
|
|
||||||
# Should just be able to set the policy
|
# Should just be able to set the policy, to use CRLF in msg output
|
||||||
output_policy = self.policy['8bit-RFC']
|
output_policy = self.policy['8bit-RFC']
|
||||||
# # Use proper CRLF all over the message.
|
|
||||||
# content = re.sub("(?<!\r)\n", CRLF, content)
|
|
||||||
|
|
||||||
# Get the date of the message, so we can pass it to the server.
|
# Get the date of the message, so we can pass it to the server.
|
||||||
date = self.__getmessageinternaldate(msg, rtime)
|
date = self.__getmessageinternaldate(msg, rtime)
|
||||||
@ -689,7 +680,7 @@ class IMAPFolder(BaseFolder):
|
|||||||
self.addmessageheader(msg, headername, headervalue)
|
self.addmessageheader(msg, headername, headervalue)
|
||||||
|
|
||||||
msg_s = msg.as_string(policy=output_policy)
|
msg_s = msg.as_string(policy=output_policy)
|
||||||
if len(content) > 200:
|
if len(msg_s) > 200:
|
||||||
dbg_output = "%s...%s" % (msg_s[:150], msg_s[-50:])
|
dbg_output = "%s...%s" % (msg_s[:150], msg_s[-50:])
|
||||||
else:
|
else:
|
||||||
dbg_output = msg_s
|
dbg_output = msg_s
|
||||||
|
@ -190,7 +190,7 @@ class LocalStatusFolder(BaseFolder):
|
|||||||
os.close(fd)
|
os.close(fd)
|
||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def savemessage(self, uid, content, flags, rtime, mtime=0, labels=None):
|
def savemessage(self, uid, msg, flags, rtime, mtime=0, labels=None):
|
||||||
"""Writes a new message, with the specified uid.
|
"""Writes a new message, with the specified uid.
|
||||||
|
|
||||||
See folder/Base for detail. Note that savemessage() does not
|
See folder/Base for detail. Note that savemessage() does not
|
||||||
|
@ -323,7 +323,7 @@ class LocalStatusSQLiteFolder(BaseFolder):
|
|||||||
# assert False,"getmessageflags() called on non-existing message"
|
# assert False,"getmessageflags() called on non-existing message"
|
||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def savemessage(self, uid, content, flags, rtime, mtime=0, labels=None):
|
def savemessage(self, uid, msg, flags, rtime, mtime=0, labels=None):
|
||||||
"""Writes a new message, with the specified uid.
|
"""Writes a new message, with the specified uid.
|
||||||
|
|
||||||
See folder/Base for detail. Note that savemessage() does not
|
See folder/Base for detail. Note that savemessage() does not
|
||||||
|
@ -254,7 +254,7 @@ class MaildirFolder(BaseFolder):
|
|||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def getmessage(self, uid):
|
def getmessage(self, uid):
|
||||||
"""Return the content of the message."""
|
"""Returns and email message object."""
|
||||||
|
|
||||||
filename = self.messagelist[uid]['filename']
|
filename = self.messagelist[uid]['filename']
|
||||||
filepath = os.path.join(self.getfullname(), filename)
|
filepath = os.path.join(self.getfullname(), filename)
|
||||||
@ -287,7 +287,7 @@ class MaildirFolder(BaseFolder):
|
|||||||
return uniq_name.replace(os.path.sep, self.sep_subst)
|
return uniq_name.replace(os.path.sep, self.sep_subst)
|
||||||
|
|
||||||
def save_to_tmp_file(self, filename, msg, policy=None):
|
def save_to_tmp_file(self, filename, msg, policy=None):
|
||||||
"""Saves given content to the named temporary file in the
|
"""Saves given message to the named temporary file in the
|
||||||
'tmp' subdirectory of $CWD.
|
'tmp' subdirectory of $CWD.
|
||||||
|
|
||||||
Arguments:
|
Arguments:
|
||||||
|
@ -236,11 +236,11 @@ class MappedIMAPFolder(IMAPFolder):
|
|||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def getmessage(self, uid):
|
def getmessage(self, uid):
|
||||||
"""Returns the content of the specified message."""
|
"""Returns the specified message."""
|
||||||
return self._mb.getmessage(self.r2l[uid])
|
return self._mb.getmessage(self.r2l[uid])
|
||||||
|
|
||||||
# Interface from BaseFolder
|
# Interface from BaseFolder
|
||||||
def savemessage(self, uid, content, flags, rtime):
|
def savemessage(self, uid, msg, flags, rtime):
|
||||||
"""Writes a new message, with the specified uid.
|
"""Writes a new message, with the specified uid.
|
||||||
|
|
||||||
The UIDMaps class will not return a newly assigned uid, as it
|
The UIDMaps class will not return a newly assigned uid, as it
|
||||||
@ -271,7 +271,7 @@ class MappedIMAPFolder(IMAPFolder):
|
|||||||
self.savemessageflags(uid, flags)
|
self.savemessageflags(uid, flags)
|
||||||
return uid
|
return uid
|
||||||
|
|
||||||
newluid = self._mb.savemessage(-1, content, flags, rtime)
|
newluid = self._mb.savemessage(-1, msg, flags, rtime)
|
||||||
if newluid < 1:
|
if newluid < 1:
|
||||||
raise OfflineImapError("server of repository '%s' did not return "
|
raise OfflineImapError("server of repository '%s' did not return "
|
||||||
"a valid UID (got '%s') for UID '%s' from '%s'" % (
|
"a valid UID (got '%s') for UID '%s' from '%s'" % (
|
||||||
|
Loading…
Reference in New Issue
Block a user