Example #1
0
 def test_parse_with_utf8_subject(self):
     """Test MailJson.parse() test utf-8 encoded 'Subject' """
     mj = MailJson(load_mail("3.txt"))
     subj = ("\xd0\x92\xd0\xb0\xd1\x88\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe"
             "\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbd"
             "\xd0\xb5 \xd0\xb4\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2"
             "\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xbe. Mail failure.")
     data = mj.parse_mail()
     self.assertEqual(data['parsed_headers']['subject'], subj)
Example #2
0
 def test_parse_with_parts(self):
     """Test MailJson.parse() with parts"""
     mail = load_mail("5.txt")
     mj = MailJson(mail)
     mj.include_parts = True
     mj.include_attachments = False
     data = mj.parse_mail()
     part_content = data['parts'][0]['content']
     content_begin = '*GDG DevFest 2014'
     self.assertTrue(part_content.startswith(content_begin))
Example #3
0
 def test_parse_with_attachments(self):
     """Test MailJson.parse() with attachments"""
     mail = load_mail("5.txt")
     mj = MailJson(mail)
     mj.include_parts = False
     mj.include_attachments = True
     data = mj.parse_mail()
     attachment_content = data['attachments'][0]['content']
     content_begin = 'iVBORw0KGgoAAAANSUhEUgAAAvoAAAD8CAYAAAAG2QDhAABAAElE'
     self.assertTrue(attachment_content.startswith(content_begin))
Example #4
0
def add_mail(db, content):
    """ Add mail headers to DB"""
    mj = MailJson(content)
    mj.parse()

    headers = mj.get_headers()
    # Save mail itself
    result = db.mail.insert_one({'mail': mj.get_encoded_mail()})
    # Save headers
    headers['encoded_mail_id'] = result.inserted_id 
    result = db.headers.insert_one(headers)
Example #5
0
 def test__fix_encoded_subject(self):
     """Test MailJson._fix_encoded_subject()"""
     ret = MailJson()._fix_encoded_subject("A")
     self.assertEqual(ret, "A")
     ret = MailJson()._fix_encoded_subject("AAAAAAAA")
     self.assertEqual(ret, "AAAAAAAA")
     ret = MailJson()._fix_encoded_subject("AAAAAAAA\nBB")
     self.assertEqual(ret, "AAAAAAAA\nBB")
     subj1 = ("=?iso-8859-1?q?Sie_haben_die_Mailingliste_=22newsletter"
              "=22_ab?=\r\n =?iso-8859-1?q?bestellt?=")
     subj2 = ("=?iso-8859-1?q?Sie_haben_die_Mailingliste_=22newsletter"
              "=22_ab?=\n =?iso-8859-1?q?bestellt?=")
     subj2 = MailJson()._fix_encoded_subject(subj1)
     self.assertEqual(subj2, subj2)
Example #6
0
 def test_parse(self):
     """Test MailJson.parse()"""
     mj = MailJson(load_mail("1.txt"))
     data = mj.parse_mail()
     self.assertEqual(data['parsed_headers']['to'][0]['email'],
                      "*****@*****.**")
     self.assertEqual(data['parsed_headers']['to'][0]['name'], "")
     self.assertEqual(data['parsed_headers']['from'][0]['email'],
                      "*****@*****.**")
     self.assertEqual(data['parsed_headers']['from'][0]['name'],
                      "Mail Delivery Subsystem")
     self.assertEqual(data['parsed_headers']['subject'],
                      "Mail Delivery Problem")
     self.assertEqual(data['parsed_headers']['message-id'],
                      "*****@*****.**")
     self.assertNotEqual(data['parts'], [])
     self.assertEqual(data['attachments'], [])
Example #7
0
    def test__extract_recipient(self):
        """Test MailJson._extract_recipient()"""
        header = "=?koi8-r?B?78vTwc7BIOvP18HM2N7Vyw==?= <*****@*****.**>"
        name1 = "\xef\xcb\xd3\xc1\xce\xc1 \xeb\xcf\xd7\xc1\xcc\xd8\xde\xd5\xcb"
        email1 = "*****@*****.**"
        (name, email) = MailJson()._extract_recipient(header)
        self.assertEqual(name, name1)
        self.assertEqual(email, email1)

        header = "'Vitush' <*****@*****.**>"
        (name, email) = MailJson()._extract_recipient(header)
        self.assertEqual(name, "Vitush")
        self.assertEqual(email, "*****@*****.**")

        header = "AAA BBB"
        (name, email) = MailJson()._extract_recipient(header)
        self.assertEqual(name, "AAA")
        self.assertEqual(email, None)
Example #8
0
    def test_parse_with_subject_encoding(self):
        """Test MailJson.parse() test 'Subject' encoding """
        mj = MailJson(load_mail("3.txt"))
        subj = ("\xd0\x92\xd0\xb0\xd1\x88\xd0\xb5 \xd1\x81\xd0\xbe\xd0\xbe"
                "\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xbd"
                "\xd0\xb5 \xd0\xb4\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2"
                "\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xbe. Mail failure.")
        data = mj.parse_mail()
        self.assertEqual(data['parsed_headers']['subject'], subj)

        mj = MailJson(load_mail("4.txt"))
        subj = 'Sie haben die Mailingliste "newsletter" abbestellt'
        data = mj.parse_mail()
        self.assertEqual(data['parsed_headers']['subject'], subj)
Example #9
0
 def test_parse_with_utf8_header(self):
     """Test MailJson.parse() test utf-8 encoded 'From' """
     mj = MailJson(load_mail("2.txt"))
     data = mj.parse_mail()
     self.assertEqual(data['parsed_headers']['from'][0]['name'], "play.pl")
Example #10
0
    def test_parse_with_filters(self):
        """Test MailJson.parse() with filters"""
        mail = load_mail("2.txt")
        mj = MailJson(mail)
        mj.include_parts = False
        data = mj.parse_mail()
        with self.assertRaises(KeyError):
            p = data['parts']

        mj = MailJson(load_mail("5.txt"))
        mj.include_attachments = False
        data = mj.parse_mail()
        with self.assertRaises(KeyError):
            a = data['attachments']

        mj = MailJson(mail)
        mj.include_headers = ("to", )
        data = mj.parse_mail()
        self.assertEqual(data['headers']['to'], '<*****@*****.**>')
        self.assertEqual(data['parsed_headers']['to'][0]['email'],
                         "*****@*****.**")
        with self.assertRaises(KeyError):
            f = data['headers']['from']
Example #11
0
 def test__extract_email(self):
     """Test MailJson._extract_email()"""
     email = MailJson()._extract_email("<*****@*****.**>")
     self.assertEqual(email, "*****@*****.**")
     email = MailJson()._extract_email("<user.doman.com>")
     self.assertEqual(email, None)