예제 #1
0
    def test_parse_mail_without_body(self):
        message = """Date: Wed, 28 Dec 2011 14:02:00 +0100
From: Alice Ally <*****@*****.**>
To: Bob Bobby <*****@*****.**>
Subject: Bob sends a mesage
Message-ID: [email protected]
X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2

Hi!

Hope you can read my message

kind reagards,
Bob
        """
        timestamp, output, notes, properties = \
            MailParser.parse_message(message)

        self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>")
        self.assertEqual(output, "[[mailto:[email protected]]" + \
                         "[Alice Ally]]: Bob sends a mesage")
        self.assertEqual(notes, "")
        self.assertEqual(properties.get_value('TO'),
                         'Bob Bobby <*****@*****.**>')
        for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'X-SCANNED-BY'):
            with self.assertRaises(KeyError):
                properties.get_value(key)
예제 #2
0
    def test_parse_mail_without_body(self):
        message = """Date: Wed, 28 Dec 2011 14:02:00 +0100
From: Alice Ally <*****@*****.**>
To: Bob Bobby <*****@*****.**>
Subject: Bob sends a mesage
Message-ID: [email protected]
X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2

Hi!

Hope you can read my message

kind reagards,
Bob
        """
        timestamp, output, notes, properties = \
            MailParser.parse_message(message)

        self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>")
        self.assertEqual(output, "[[mailto:[email protected]]" + \
                         "[Alice Ally]]: Bob sends a mesage")
        self.assertEqual(notes, "")
        p = """   :PROPERTIES:
   :TO:         Bob Bobby <*****@*****.**>
   :ID:         8fd560c32d51c455744df7abd26ea545924ba632
   :END:"""

        self.assertEqual(unicode(properties), p)
예제 #3
0
    def test_parse_ng_with_body(self):
        message = """Path: news.tugraz.at!not-for-mail
From: Alice Ally <*****@*****.**>
Newsgroups: tu-graz.betriebssysteme.linux
Subject: I love Memacs
Date: Thu, 17 Nov 2011 22:02:06 +0100
Message-ID: <*****@*****.**>
Reply-To: [email protected]
Content-Type: text/plain; charset=utf-8

i just want to say that i love Memacs
"""
        timestamp, output, notes, properties = \
            MailParser.parse_message(message,
                                     True)

        self.assertEqual(timestamp, "<2011-11-17 Thu 22:02>")
        self.assertEqual(output,
                         "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \
                         "graz.betriebssysteme.linux]" + \
                         "[tu-graz.betriebssysteme.linux]]: I love Memacs")
        self.assertEqual(notes, "i just want to say that i love Memacs\n")
        self.assertEqual(properties.get_value('NEWSGROUPS'),
                         'tu-graz.betriebssysteme.linux')
        self.assertEqual(properties.get_value('REPLY-TO'), '*****@*****.**')
        for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'CONTENT-TYPE'):
            with self.assertRaises(KeyError):
                properties.get_value(key)
예제 #4
0
    def test_parse_ng_with_body(self):
        message = """Path: news.tugraz.at!not-for-mail
From: Alice Ally <*****@*****.**>
Newsgroups: tu-graz.betriebssysteme.linux
Subject: I love Memacs
Date: Thu, 17 Nov 2011 22:02:06 +0100
Message-ID: <*****@*****.**>
Reply-To: [email protected]
Content-Type: text/plain; charset=utf-8

i just want to say that i love Memacs
"""
        timestamp, output, notes, properties = \
            MailParser.parse_message(message,
                                     True)

        self.assertEqual(timestamp, "<2011-11-17 Thu 22:02:06>")
        self.assertEqual(output,
                         "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \
                         "graz.betriebssysteme.linux]" + \
                         "[tu-graz.betriebssysteme.linux]]: I love Memacs")
        self.assertEqual(notes, "i just want to say that i love Memacs\n")
        p = """   :PROPERTIES:\n   :REPLY-TO:   [email protected]
   :NEWSGROUPS: tu-graz.betriebssysteme.linux
   :ID:         53e60f934645301478db6c9d5d3df71a043f9851
   :END:"""

        self.assertEqual(unicode(properties), p)
예제 #5
0
    def test_parse_mail_without_body(self):
        message = """Date: Wed, 28 Dec 2011 14:02:00 +0100
From: Alice Ally <*****@*****.**>
To: Bob Bobby <*****@*****.**>
Subject: Bob sends a mesage
Message-ID: [email protected]
X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2

Hi!

Hope you can read my message

kind reagards,
Bob
        """
        timestamp, output, notes, properties = \
            MailParser.parse_message(message)

        self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>")
        self.assertEqual(output, "[[mailto:[email protected]]" + \
                         "[Alice Ally]]: Bob sends a mesage")
        self.assertEqual(notes, "")
        p = """   :PROPERTIES:
   :TO:         Bob Bobby <*****@*****.**>
   :ID:         8fd560c32d51c455744df7abd26ea545924ba632
   :END:"""

        self.assertEqual(unicode(properties), p)
예제 #6
0
    def test_parse_ng_with_body(self):
        message = """Path: news.tugraz.at!not-for-mail
From: Alice Ally <*****@*****.**>
Newsgroups: tu-graz.betriebssysteme.linux
Subject: I love Memacs
Date: Thu, 17 Nov 2011 22:02:06 +0100
Message-ID: <*****@*****.**>
Reply-To: [email protected]
Content-Type: text/plain; charset=utf-8

i just want to say that i love Memacs
"""
        timestamp, output, notes, properties = \
            MailParser.parse_message(message,
                                     True)

        self.assertEqual(timestamp, "<2011-11-17 Thu 22:02:06>")
        self.assertEqual(output,
                         "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \
                         "graz.betriebssysteme.linux]" + \
                         "[tu-graz.betriebssysteme.linux]]: I love Memacs")
        self.assertEqual(notes, "i just want to say that i love Memacs\n")
        p = """   :PROPERTIES:\n   :REPLY-TO:   [email protected]
   :NEWSGROUPS: tu-graz.betriebssysteme.linux
   :ID:         53e60f934645301478db6c9d5d3df71a043f9851
   :END:"""

        self.assertEqual(unicode(properties), p)
예제 #7
0
    def test_parse_mail_without_body(self):
        message = """Date: Wed, 28 Dec 2011 14:02:00 +0100
From: Alice Ally <*****@*****.**>
To: Bob Bobby <*****@*****.**>
Subject: Bob sends a mesage
Message-ID: [email protected]
X-Scanned-By: MIMEDefang 2.71 on 129.27.10.2

Hi!

Hope you can read my message

kind reagards,
Bob
        """
        timestamp, output, notes, properties = \
            MailParser.parse_message(message)

        self.assertEqual(timestamp, "<2011-12-28 Wed 14:02>")
        self.assertEqual(output, "[[mailto:[email protected]]" + \
                         "[Alice Ally]]: Bob sends a mesage")
        self.assertEqual(notes, "")
        self.assertEqual(
            properties.get_value('TO'), 'Bob Bobby <*****@*****.**>'
        )
        for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'X-SCANNED-BY'):
            with self.assertRaises(KeyError):
                properties.get_value(key)
예제 #8
0
    def test_parse_ng_with_body(self):
        message = """Path: news.tugraz.at!not-for-mail
From: Alice Ally <*****@*****.**>
Newsgroups: tu-graz.betriebssysteme.linux
Subject: I love Memacs
Date: Thu, 17 Nov 2011 22:02:06 +0100
Message-ID: <*****@*****.**>
Reply-To: [email protected]
Content-Type: text/plain; charset=utf-8

i just want to say that i love Memacs
"""
        timestamp, output, notes, properties = \
            MailParser.parse_message(message,
                                     True)

        self.assertEqual(timestamp, "<2011-11-17 Thu 22:02>")
        self.assertEqual(output,
                         "[[mailto:[email protected]][Alice Ally]]@[[news:tu-" + \
                         "graz.betriebssysteme.linux]" + \
                         "[tu-graz.betriebssysteme.linux]]: I love Memacs")
        self.assertEqual(notes, "i just want to say that i love Memacs\n")
        self.assertEqual(
            properties.get_value('NEWSGROUPS'), 'tu-graz.betriebssysteme.linux'
        )
        self.assertEqual(
            properties.get_value('REPLY-TO'), '*****@*****.**'
        )
        for key in ('FROM', 'SUBJECT', 'DATE', 'MESSAGE-ID', 'CONTENT-TYPE'):
            with self.assertRaises(KeyError):
                properties.get_value(key)
예제 #9
0
파일: imap.py 프로젝트: rayleyva/Memacs
    def __fetch_mails_and_write(self, server, message_ids, folder_name):
        """
        Fetches All headers, let Mailparser parse each mail,
        write to outputfile

        @param server: imaplib IMAP4_SLL object
        @param message_ids: list of ids to fetch
        @param folder_name: folder name of connection
        """
        num = ",".join(message_ids)

        logging.debug(num)
        typ, data = server.uid("fetch",
                               num,
                               "(BODY.PEEK[HEADER.FIELDS " + \
                                   "(Date Subject " + \
                                   "From To Cc Reply-To Message-ID)])")

        if typ == "OK":
            i = 0

            # we have to go in step 2 because every second string is a ")"
            for i in range(0, len(data), 2):
                message = data[i][1]
                timestamp, output, note, properties = \
                    MailParser.parse_message(message)

                # just for debbuging in orgfile
                # properties.add("NUM",data[i][0][:5])
                self._writer.write_org_subitem(timestamp,
                                               output,
                                               note,
                                               properties)

        else:
            logging.error("Could not fetch mails typ - %s", typ)
            server.logout(1)
            sys.exit(1)