aboutsummaryrefslogtreecommitdiff
path: root/utils/mail.py
blob: 491faa8c01f61c17fcfd813183df3c290065c0cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from pyzmail import PyzMessage, decode_text

class Email(object):
    def __init__(self, raw_mail_lines):
        msg_content = b'\r\n'.join(raw_mail_lines)
        msg =  PyzMessage.factory(msg_content)

        self.subject = msg.get_subject()
        self.sender = msg.get_address('from')
        self.date = msg.get_decoded_header('date', '')
        self.id = msg.get_decoded_header('message-id', '')

        for mailpart in msg.mailparts:
            if mailpart.is_body=='text/plain':
                payload, used_charset=decode_text(mailpart.get_payload(), mailpart.charset, None)
                self.charset = used_charset
                self.text = payload
                return
            else:
                self.text = None

    def __repr__(self):
        mail_str = "Subject: %s\n" % self.subject
        mail_str += "From: %s %s\n" % self.sender
        mail_str += "Date: %s\n" % self.date
        mail_str += "ID: %s\n" % self.id
        if self.text:
            mail_str += "Text: %s\n" % self.text
        return mail_str