使用IMAP协议有效处理电子邮件。
imap-tools的Python项目详细描述
使用IMAP协议有效处理电子邮件。
Python version | 3.3+ |
License | MIT |
PyPI | https://pypi.python.org/pypi/imap_tools/ |
IMAP | VERSION 4rev1 - https://tools.ietf.org/html/rfc3501 |
功能
- 具有字母属性的透明工作
- 处理目录中的字母(复制、删除、标记、移动、查看) 使用目录(列表、设置、获取、创建、存在、重命名、删除、状态)
- 无依赖关系
安装
$ pip install imap_tools
快速指南
基础:
fromimap_toolsimportMailBoxmailbox=MailBox('imap.mail.com')mailbox.login('test@mail.com','password')subjects=[msg.subjectformsginmailbox.fetch()]mailbox.logout()# ORwithMailBox('imap.mail.com').login('test@mail.com','password')asmailbox:subjects=[msg.subjectformsginmailbox.fetch()]
mailbox.fetch-电子邮件生成器,参数:
- 搜索条件:消息搜索条件,examples
- limit:限制已读电子邮件的数量,对于处理大量邮件(如“move”)非常有用
- miss_defect:有缺陷的邮件丢失
- miss没有uid:miss emails没有uid
- mark\u seen:将电子邮件标记为在获取时看到
消息属性:
# NOTE: All message properties are cached by functools.lru_cacheformessageinmailbox.fetch():message.idmessage.uidmessage.subjectmessage.from_message.tomessage.ccmessage.bccmessage.datemessage.textmessage.htmlmessage.flagsmessage.from_valuesmessage.to_valuesmessage.cc_valuesmessage.bcc_valuesforfilename,payloadinmessage.attachments:filename,payload# Any message attribute: message.obj['Message-ID'], message.obj['X-Google-Smtp-Source'] ...
文件夹中包含邮件的操作:
# NOTE: You can use 2 approaches to perform these operations# "by one" - Perform operation for each message separately per N commands# "in bulk" - Perform operation for message set per 1 commandwithMailBox('imap.mail.com').login('test@mail.com','pwd',initial_folder='INBOX')asmailbox:# COPY all messages from current dir to folder1, *by oneformsginmailbox.fetch():res=mailbox.copy(msg.uid,'INBOX/folder1')# DELETE all messages from current dir, *in bulkmailbox.delete([msg.uidformsginmailbox.fetch()])# FLAG unseen messages in current folder as Answered and Flagged, *in bulk.flags=(imap_tools.StandardMessageFlags.ANSWERED,imap_tools.StandardMessageFlags.FLAGGED)mailbox.flag(mailbox.fetch('(UNSEEN)'),flags,True)# MOVE all messages from current dir to folder2, *in bulkmailbox.move(mailbox.fetch(),'INBOX/folder2')# SEEN: mark all messages sent at 05.03.2007 in current folder as unseen, *in bulkmailbox.seen(mailbox.fetch("SENTON 05-Mar-2007"),False)
文件夹操作:
mailbox.login('test@mail.com','pwd')# LISTforfolderinmailbox.folder.list('INBOX'):print(folder['flags'],folder['delim'],folder['name'])# SETmailbox.folder.set('INBOX')# GETcurrent_folder=mailbox.folder.get()# CREATEmailbox.folder.create('folder1')# EXISTSis_exists=mailbox.folder.exists('folder1')# RENAMEmailbox.folder.rename('folder1','folder2')# DELETEmailbox.folder.delete('folder2')# STATUSforstatus_key,status_valinmailbox.folder.status('some_folder').items():print(status_key,status_val)mailbox.logout()
原因
通过imap协议处理电子邮件有许多不同的库。包括imaplib库。 但是,这些库包含各种缺点,例如:
- 过低
- 返回的结果尚未准备好使用它们
- 没有方便的工具可以使用:目录、目录中的字母