예제 #1
0
    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)
예제 #2
0
    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())
예제 #3
0
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]
예제 #4
0
    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())
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
# Copyright (C) 2001 Python Software Foundation
예제 #8
0
 def test_parsedate_none(self):
     self.assertEqual(Utils.parsedate(''), None)
예제 #9
0
 def test_parsedate_none(self):
     self.assertEqual(Utils.parsedate(''), None)
예제 #10
0
 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]