使用IMAP协议有效处理电子邮件。

imap-tools的Python项目详细描述


使用IMAP协议有效处理电子邮件。

Python version3.3+
LicenseMIT
PyPIhttps://pypi.python.org/pypi/imap_tools/
IMAPVERSION 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库。 但是,这些库包含各种缺点,例如:

  • 过低
  • 返回的结果尚未准备好使用它们
  • 没有方便的工具可以使用:目录、目录中的字母

发行说明

release_notes.rst

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
web Java/Guice配置MyExample类的应用程序侦听器时出错。GuiceServletConfig   java环境变量。exe始终指向JRE的路径,但不指向JDK   java如何解决这个索引器?   java如何解决Android MultiDex应用程序实例空指针异常?   delphi如何处理java通过tcp发送的序列化对象   java常量池条目   base64 java将jpg文件转换为字节字符串,然后再次转换回jpg   rest是否可以使用运行时解析的GenericType参数调用Java JAXRS请求方法?   Java:如何在Java中轻松更改配置文件值?   java无法通过imagebutton 安卓 studio打开网页   java Tomcat 6 java_主页   java使用@BindingResult和@Validated   性能neo4j Java API getRelationships方法的时间复杂性   java Vert中的sharedData异步映射的寿命有多长。十、   java Mockito模拟调用两次的方法调用   java如何避免这种ClassCastException?   java从POM文件获取artifactId出错   java如何使用for循环在一个范围内添加偶数