Esempio n. 1
0
    def test_attributes(self):
        test_msg_attr_set = {'subject', 'from_', 'to', 'cc', 'bcc', 'reply_to', 'date', 'date_str', 'text', 'html',
                             'headers', 'from_values', 'to_values', 'cc_values', 'bcc_values', 'reply_to_values'}
        test_att_attr_set = {'filename', 'content_id', 'content_type', 'content_disposition', 'payload'}

        eml_path_set = []
        for path_variant in ('../tests/messages', 'tests/messages'):
            for root, subdirs, files in os.walk(path_variant):
                for file_name in files:
                    full_path = os.path.abspath('{}/{}'.format(root, file_name)).replace('\\', '/')
                    if full_path.lower().endswith('.eml'):
                        eml_path_set.append(full_path)

        for eml_path in eml_path_set:
            py_path = eml_path.replace('/messages/', '/messages_data/')[:-4] + '.py'
            eml_data_module = _load_module(py_path)
            expected_data = eml_data_module.DATA  # noqa
            with open(eml_path, 'rb') as f:
                bytes_data = f.read()
            message = MailMessage.from_bytes(bytes_data)
            for msg_attr in test_msg_attr_set:
                self.assertEqual(getattr(message, msg_attr), expected_data[msg_attr])
            for att_i, att in enumerate(message.attachments):
                for att_attr in test_att_attr_set:
                    self.assertEqual(getattr(att, att_attr), expected_data['attachments'][att_i][att_attr])
Esempio n. 2
0
 def test_attributes(self):
     msg_attr_set = {
         'subject', 'from_', 'to', 'cc', 'bcc', 'reply_to', 'date',
         'date_str', 'text', 'html', 'headers', 'from_values', 'to_values',
         'cc_values', 'bcc_values', 'reply_to_values'
     }
     att_attr_set = {
         'filename', 'content_id', 'content_type', 'content_disposition',
         'payload'
     }
     for file_name in MESSAGE_ATTRIBUTES.keys():
         message_data = MESSAGE_ATTRIBUTES[file_name]
         for msg_path in ('../tests/messages/{}.eml'.format(file_name),
                          'tests/messages/{}.eml'.format(file_name)):
             if not os.path.exists(msg_path):
                 continue
             with open(msg_path, 'rb') as f:
                 bytes_data = f.read()
         message = MailMessage.from_bytes(bytes_data)
         for msg_attr in msg_attr_set:
             self.assertEqual(getattr(message, msg_attr),
                              message_data[msg_attr])
         for att_i, att in enumerate(message.attachments):
             for att_attr in att_attr_set:
                 self.assertEqual(
                     getattr(att, att_attr),
                     message_data['attachments'][att_i][att_attr])
Esempio n. 3
0
from imap_tools import MailBox, MailMessage

# parse .eml files attached to email messages
with MailBox('imap.mail.com').login('*****@*****.**', 'password') as mailbox:
    for message in mailbox.fetch():
        for filename, payload in message.attachments:
            if '.eml' in filename:
                print(filename)
                eml_email = MailMessage.from_bytes(payload)
                print('- subject: ', eml_email.subject)
                print('- date_str: ', eml_email.date_str)
Esempio n. 4
0
from imap_tools import MailBox, MailMessage

# parse .eml files attached to email messages
with MailBox('imap.mail.com').login('*****@*****.**', 'password') as mailbox:
    for message in mailbox.fetch():
        for att in message.attachments:
            if '.eml' in att.filename:
                print(att.filename)
                eml_email = MailMessage.from_bytes(att.payload)
                print('- subject: ', eml_email.subject)
                print('- date_str: ', eml_email.date_str)

# parse .eml files from attached .eml files (2 levels of nesting)
with open('/tmp/1.eml', 'rb') as f:
    bytes_data = f.read()
msg = MailMessage.from_bytes(bytes_data)
for att in msg.attachments:
    if '.eml' in att.filename:
        # 1 level .eml
        msg_level_1 = MailMessage.from_bytes(att.payload)
        print(att.filename)
        print('* subject: ', msg_level_1.subject)
        print('* date: ', msg_level_1.date)
        for att_sub in msg_level_1.attachments:
            if '.eml' in att_sub.filename:
                # 2 level .eml
                msg_level_2 = MailMessage.from_bytes(att_sub.payload)
                print('|--', att_sub.filename)
                print('|   * subject: ', msg_level_2.subject)
                print('|   * date: ', msg_level_2.date)
Esempio n. 5
0
from imap_tools import MailMessage

with open('.../attachment_2_base64.eml', 'rb') as f:
    bytes_data = f.read()
msg = MailMessage.from_bytes(bytes_data)
print(msg.date_str, msg.subject)
for i, att in msg.attachments:
    print('-', att.filename, att.content_type, len(att.payload))