Esempio n. 1
0
 def from_maildir(cls, uid: int, maildir_msg: MaildirMessage,
                  maildir: Maildir, key: str,
                  email_id: Optional[ObjectId],
                  thread_id: Optional[ObjectId],
                  maildir_flags: MaildirFlags) -> Message:
     flag_set = maildir_flags.from_maildir(maildir_msg.get_flags())
     recent = maildir_msg.get_subdir() == 'new'
     msg_dt = datetime.fromtimestamp(maildir_msg.get_date())
     return cls(uid, msg_dt, flag_set,
                email_id=email_id, thread_id=thread_id,
                recent=recent, maildir=maildir, key=key)
Esempio n. 2
0
 def from_maildir(cls, uid: int, maildir_msg: MaildirMessage,
                  maildir_flags: 'MaildirFlags',
                  metadata_only: bool) -> 'Message':
     flag_set = maildir_flags.from_maildir(maildir_msg.get_flags())
     recent = maildir_msg.get_subdir() == 'new'
     msg_dt = datetime.fromtimestamp(maildir_msg.get_date())
     if metadata_only:
         return cls(uid, flag_set, msg_dt, recent=recent,
                    maildir_flags=maildir_flags)
     else:
         msg_data = bytes(maildir_msg)
         return cls.parse(uid, msg_data, flag_set, msg_dt, recent=recent,
                          maildir_flags=maildir_flags)
Esempio n. 3
0
def process(msg: mailbox.MaildirMessage) -> Item:
    sender, address = parseaddr(msg["From"])
    date = datetime.datetime.utcfromtimestamp(
        msg.get_date()).isoformat()  # ISO 8601 format
    subject = msg["Subject"]
    content = ""
    for part in msg.walk():
        if part.get_content_type() == "text/plain" or part.get_content_type(
        ) == "text/html":
            content += part.get_payload(decode=True).decode('utf-8')
    print(sender)
    print(address)
    print(date)
    print(subject)
    print(content)
    return Item(sender, address, date, subject, content)