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 store_message(maildir, state, uid, message, flags): msg = MaildirMessage(message) if '\\Seen' in flags: msg.add_flag('S') flags = msg.get_flags() uid = int(uid) s = state.get(uid) if s: if s.flags != flags: maildir.set_flags(s.msgkey, flags) else: key = maildir.add(msg, flags) state.put(uid, key, flags)