aboutsummaryrefslogtreecommitdiff
path: root/utils/mail.py
blob: 3df068b92254271e41f9eb4b073834b042e4d049 (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
30
31
from pyzmail import PyzMessage, decode_text


class Email(object):
    def __init__(self, raw_mail_lines):
        msg = PyzMessage.factory(raw_mail_lines)

        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