def __compareMessageObjects(self, mOne, mTwo): self.assertNotEqual(mOne, None) self.assertNotEqual(mTwo, None) self.assertEquals(mOne['From'], mTwo['From']) self.assertEquals(mOne['To'], mTwo['To']) self.assertEquals(mOne['Cc'], mTwo['Cc']) self.assertEquals(mOne['Content-Transfer-Encoding'], mTwo['Content-Transfer-Encoding']) self.assertEquals(mOne['Mime-Version'], mTwo['Mime-Version']) self.assertEquals(mOne['Subject'], mTwo['Subject']) dOne = emailUtils.parsedate(mOne['Date']) dTwo = emailUtils.parsedate(mTwo['Date']) for i in range(6): if dOne[i] != dTwo[i]: self.fail("Dates do not match %s != %s" % (mOne['Date'], mTwo['Date'])) if mOne.get_content_maintype() == 'multipart': payloadOne = mOne.get_payload()[0].get_payload()[1].get_payload(decode=True) else: payloadOne = mOne.get_payload(decode=True) if mTwo.get_content_maintype() == 'multipart': payloadTwo = mTwo.get_payload()[0].get_payload()[1].get_payload(decode=True) else: payloadTwo = mTwo.get_payload(decode=True) self.assertEquals(payloadOne, payloadTwo)
def __compareMessageObjects(self, mOne, mTwo): self.assertNotEqual(mOne, None) self.assertNotEqual(mTwo, None) self.assertEquals(mOne['From'], mTwo['From']) self.assertEquals(mOne['To'], mTwo['To']) self.assertEquals(mOne['Cc'], mTwo['Cc']) self.assertEquals(mOne['Content-Length'], mTwo['Content-Length']) self.assertEquals(mOne['Content-Type'], mTwo['Content-Type']) self.assertEquals(mOne['Content-Transfer-Encoding'], mTwo['Content-Transfer-Encoding']) self.assertEquals(mOne['Mime-Version'], mTwo['Mime-Version']) self.assertEquals(mOne['Subject'], mTwo['Subject']) dOne = emailUtils.parsedate(mOne['Date']) dTwo = emailUtils.parsedate(mTwo['Date']) for i in range(6): if dOne[i] != dTwo[i]: self.fail("Dates do not match %s != %s" % (mOne['Date'], mTwo['Date'])) self.assertEquals(mOne.get_payload(), mTwo.get_payload())
def __parseHeaders(view, messageObject, m): date = messageObject['Date'] if date is not None: #XXX: look at using Utils.parsedate_tz parsed = emailUtils.parsedate(date) """It is a non-rfc date string""" if parsed is None: if __debug__: logging.warn("Message contains a Non-RFC Compliant Date format") """Set the sent date to the current Date""" m.dateSent = datetime.now() else: m.dateSent = datetime.fromtimestamp(mktime(parsed)) ##XXX: Do we need this the tz could be preserved m.dateSentString = date del messageObject['Date'] else: m.dateSent = utils.getEmptyDate() m.dateSentString = "" __assignToKind(view, m, messageObject, 'Subject', 'String', 'subject') __assignToKind(view, m, messageObject, 'From', 'EmailAddress', 'fromAddress') __assignToKind(view, m, messageObject, 'Reply-To', 'EmailAddress', 'replyToAddress') __assignToKind(view, m.toAddress, messageObject, 'To', 'EmailAddressList') __assignToKind(view, m.ccAddress, messageObject, 'Cc', 'EmailAddressList') __assignToKind(view, m.bccAddress, messageObject, 'Bcc', 'EmailAddressList') """Do not decode the message ID as it requires no i18n processing""" __assignToKind(view, m, messageObject, 'Message-ID', 'String', 'messageId', False) m.chandlerHeaders = {} m.headers = {} #XXX: Will want to selectively decodeHeaders for i18n support see RFC: 2231 # for more info for (key, val) in messageObject.items(): if isChandlerHeader(key): m.chandlerHeaders[key] = val else: m.headers[key] = val del messageObject[key]
def __getMailMessage(self): if self.__mailMessage is not None: return self.__mailMessage view = self.rep.view m = Mail.MailMessage(view=view) m.fromAddress = Mail.EmailAddress(view=view) m.fromAddress.emailAddress = "*****@*****.**" toOne = Mail.EmailAddress(view=view) toOne.emailAddress = "*****@*****.**" toTwo = Mail.EmailAddress(view=view) toTwo.emailAddress = "*****@*****.**" toTwo.fullName = "John Johnson" m.toAddress = [] m.toAddress.append(toOne) m.toAddress.append(toTwo) ccOne = Mail.EmailAddress(view=view) ccOne.emailAddress = "*****@*****.**" m.ccAddress = [] m.ccAddress.append(ccOne) m.subject = "test mail" m.headers['Content-Length'] = "75" m.headers['Content-Type'] = "text/plain; charset=utf-8; format=flowed" m.headers['Content-Transfer-Encoding'] = "7bit" m.headers['Mime-Version'] = "1.0" m.headers[ 'Received'] = "from [192.168.101.37] (w002.z065106067.sjc-ca.dsl.cnc.net [65.106.67.2]) by kahuna.osafoundation.org (8.12.8/8.12.8) with ESMTP id i7GKWWpo017020; Mon, 16 Aug 2004 13:32:32 -0700" m.headers[ 'References'] = "<*****@*****.**> <*****@*****.**> <*****@*****.**> <*****@*****.**>" dateString = "Mon, 9 Aug 2004 13:55:15 -0700" m.dateSent = datetime.fromtimestamp( mktime(emailUtils.parsedate(dateString))) m.dateSentString = dateString m.body = utils.unicodeToText(m, "body", u"This is the body") m.rfc2822Message = utils.dataToBinary(m, "rfc2822Message", self.__mail) self.__mailMessage = m return self.__mailMessage
def __getMailMessage(self): if self.__mailMessage is not None: return self.__mailMessage view = self.rep.view m = Mail.MailMessage(view=view) m.fromAddress = Mail.EmailAddress(view=view) m.fromAddress.emailAddress = "*****@*****.**" toOne = Mail.EmailAddress(view=view) toOne.emailAddress = "*****@*****.**" toTwo = Mail.EmailAddress(view=view) toTwo.emailAddress = "*****@*****.**" toTwo.fullName = "John Johnson" m.toAddress = [] m.toAddress.append(toOne) m.toAddress.append(toTwo) ccOne = Mail.EmailAddress(view=view) ccOne.emailAddress = "*****@*****.**" m.ccAddress = [] m.ccAddress.append(ccOne) m.subject = "test mail" m.headers['Content-Length'] = "75" m.headers['Content-Type'] = "text/plain; charset=utf-8; format=flowed" m.headers['Content-Transfer-Encoding'] = "7bit" m.headers['Mime-Version'] = "1.0" m.headers['Received'] = "from [192.168.101.37] (w002.z065106067.sjc-ca.dsl.cnc.net [65.106.67.2]) by kahuna.osafoundation.org (8.12.8/8.12.8) with ESMTP id i7GKWWpo017020; Mon, 16 Aug 2004 13:32:32 -0700" m.headers['References'] = "<*****@*****.**> <*****@*****.**> <*****@*****.**> <*****@*****.**>" dateString = "Mon, 9 Aug 2004 13:55:15 -0700" m.dateSent = datetime.fromtimestamp(mktime(emailUtils.parsedate(dateString))) m.dateSentString = dateString m.body = utils.unicodeToText(m, "body", u"This is the body") m.rfc2822Message = utils.dataToBinary(m, "rfc2822Message", self.__mail) self.__mailMessage = m return self.__mailMessage
# Copyright (C) 2001 Python Software Foundation
def test_parsedate_none(self): self.assertEqual(Utils.parsedate(''), None)
def convert_rfc2822_time(time_str): """ converts a time-string used in /+text into a time-tuple time_str: like 'Tue, 27 Nov 2007 11:15:12 -0000' returns: time tuple """ return Utils.parsedate(time_str)[0:6]