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)
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)
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)