邮件接收

python3可以使用poplib.POP3进行邮件接收,具体如下:

import poplib
from email.parser import Parser def get_email(email,password,host="mail.163.com"):
# connect to pop3 server
server = poplib.POP3(host)
# open debug
server.set_debuglevel(1) # 身份验证
server.user(email)
server.pass_(password) # 返回邮件总数目和占用服务器的空间大小(字节数), 通过stat()方法即可
# print("Mail counts: {0}, Storage Size: {0}".format(server.stat())) # 使用list()返回所有邮件的编号,默认为字节类型的串
resp, mails, octets = server.list()
# print("响应信息: ", resp)
# print("所有邮件简要信息: ", mails)
# print("list方法返回数据大小(字节): ", octets) # get the latest, index from 1:
index = len(mails)
if index < 1:
return None
resp, lines, octets = server.retr(index) # 可以获得整个邮件的原始文本:
msg_content = b'\r\n'.join(lines).decode('utf-8')
# 解析出邮件:
msg = Parser().parsestr(msg_content)
# print(msg)
# print("解码后的邮件信息:\r\n"+str(msg)) #close
server.close()
return msg def delete_email(email,password,host="mail.163.com"):
# connect to pop3 server
server = poplib.POP3(host)
# open debug
# server.set_debuglevel(1) # 身份验证
server.user(email)
server.pass_(password) # 使用list()返回所有邮件的编号,默认为字节类型的串
# list()返回tuple
resp, mails, octets = server.list()
# print("响应信息: ", resp)
# print("所有邮件简要信息: ", mails)
# print("list方法返回数据大小(字节): ", octets) # get the latest, index from 1:
index = len(mails) # 删除所有邮件
while index > 0:
server.dele(index)
print(index)
index = index -1 # commit command and close
server.quit()

邮件解析


# 解析邮件正文
def get_mail_content(msg):
if msg == None:
return None
for part in msg.walk():
if not part.is_multipart():
data = part.get_payload(decode=True)
# print("emailcontent:\r\n"+data.decode())
return data.decode()

poplib关键函数解析

  • POP3.dele(which)

标记消息号 which 以进行删除。在大多数服务器上,删除直到QUIT才被实际执行(主要例外是Eudora QPOP,它通过在任何断开连接上进行未决删除而故意违反RFC)。

  • POP3.quit()

注销:提交更改,解锁邮箱,删除连接。

email.message关键函数解析

  • walk()

walk() 方法是一种通用的生成器,可用于以深度优先遍历顺序遍历消息对象树的所有部分和子部分。您通常会在 for 循环中使用 walk() 作为迭代器;每次迭代返回下一个子部分。

  • is_multipart()

is_multipart()

如果消息的有效内容是一个子EmailMessage 对象的列表,则返回 True,否则返回 False。当 is_multipart() 返回 False 时,有效负载应为字符串对象(可能是CTE编码的二进制有效负载)。注意,is_multipart() 返回 True 并不一定意味着“msg.get_content_maintype() == ‘multipart’”将返回 True。例如,当 EmailMessage 类型为 message/rfc822 时,is_multipart 将返回 True。

  • get_content_type()

get_content_type()返回消息的内容类型,强制为表格 maintype/subtype 的小写。如果消息中没有 Content-Type 头,则返回 get_default_type() 返回的值。如果 Content-Type 头无效,则返回 text/plain。

(根据 RFC 2045,消息总是有一个默认类型,get_content_type() 将总是返回一个值。RFC 2045 定义一个消息的默认类型为 text/plain,除非它出现在一个 multipart/digest 容器中,在这种情况下,它将是 message/rfc822 如果 Content-Type 头有一个无效的类型规范,RFC 2045 强制默认类型为 text/plain。)

email.message API文档

python3接收、解析邮件的更多相关文章

  1. javaMail邮件接收解析内容及附件 及删除邮件

    参考自:  http://blog.csdn.net/xyang81/article/details/7675160 package com.szy.project.utils; import jav ...

  2. java来接收邮件并解析邮件正文中的表格

    这里是实际需求中的一个DEMO 有一部分内容进行了注释和处理,参考需要修改成自己的实际参数.另这个是对于实际一个场景的案例并不是通用解决的工具类. import org.jsoup.Jsoup; im ...

  3. JavaMail入门第五篇 解析邮件

    上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...

  4. Python3 配置文件 解析

    /************************************************************************ * Python3 配置文件 解析 * 说明: * ...

  5. python之poplib模块下载并解析邮件

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之poplib模块下载并解析邮件 #https://github.com/michaelliao ...

  6. Python连载57- 邮件头和主题、解析邮件

    一.添加邮件头,抄送等信息 1.mail["From"]表示发送者信息,包括姓名和邮件 2.mail["To"]表示接收者信息,包括姓名和邮件地址 3.mail ...

  7. C#邮件接收系统核心代码(接收POP3邮件IMAP邮件)

    /* * Created by SharpDevelop. * User: Administrator * Date: 2013/11/18 * Time: 20:55 * * To change t ...

  8. Python3+getopt解析命令行参数

    一.说明 在学C语言的时候就知道可以通过argc获取命令行参数个数,可以通过argv获取具体参数.但自己写的程序获取到的参数一是没有键值形式二是写的参数不能乱序,和系统命令不太一样. 再往后点知道有g ...

  9. 邮件收取客户端LumiSoft类库接收yahoo邮件的问题。

    //开始循环取邮件数据 m_pImap.Fetch( false, IMAP_t_SeqSet.Parse("1:*"), new IMAP_t_Fetch_i[]{ new IM ...

随机推荐

  1. jvm详情——4、分代垃圾回收详述

    虚拟机中的共划分为三个代: 年轻代(Young Generation) 年老点(Old Generation) 持久代(Permanent Generation) 其中持久代主要存放的是Java类的类 ...

  2. CC2530微处理器接口开发技术——信号灯的设计与实现

    本问主要介绍了CC2530处理器的通用输入/输出接口(GPIO),以及GPIO的位操作,理解GPIO的基本原理和功能,最后使用C语言驱动CC2530的GPIO实现对信号灯的控制. CC2530的GPI ...

  3. Go语言学习笔记(六) [包]

    日期:2014年7月30日   1.定义:包时函数和数据的集合.使用package关键字定义一个包,文件名不需要与包名一致,包名约定使用小写字符,Go包可以由多个文件组成,但是需要使用相同的packa ...

  4. Spring Cloud Config采用Git存储时两种常用的配置策略

    由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略.即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就 ...

  5. python模块之shutil

    shutil是一个用于简化文件操作的模块. 复制文件(传入源文件对象和目标文件对象) import shutil f1 = open(r'/Users/jingxing/PycharmProjects ...

  6. lambda,linq

    一:什么是Lambda表达式 lambda表达式是实例化委托的一个参数,就是一个方法,具体实现如下: { //.NetFramework 1.0-1.1的时候这样应用 NoReturnNoPara m ...

  7. MySQL行转列

    IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则 ...

  8. javascript 小实例,求和的方法sumFn

    新年第一记,从这里开始,先来个简单的!去年的知识梳理留下了很多尾巴,原因有很多(知识储量不足,懒了,项目多...) lg:都是借口~   好吧,我承认,这都是借口,今年一定把尾巴清干净! 下面要写的是 ...

  9. Redis学习笔记(1)-安装Oracle VM VirtualBox

    Oracle VM VirtualBox官网网址 打开安装包网址界面,如下所示,点击截图红框. 下载完成后,点击exe文件,不停的点击下一步. 因为是使用MarkDown编辑器书写的尝试,所以写的简单 ...

  10. NET(C#)接入Dubbo服务,Zookeeper作为Dubbo服务的注册中心,实现thrift协议访问接口(3)

    如何引用Zookeeper.dll 下载最新版本的Zookeeper 地址:http://mirrors.cnnic.cn/apache/zookeeper/ 没有.NET代码 dotnet代码下载 ...