邮件接收

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. GloVe损失函数的理解

        简介 GloVe是一种非常简单快速的训练词向量的算法.与复杂的word2vec相比,其是一个log双线性模型,仅通过一个简单的损失函数就能够得到很好的结果. (1)J=∑i,jNf(Xi,j) ...

  2. python multiprocessing深度解析

    在写python多线程代码的时候,会用到multiprocessing这个包,这篇文章总结了一些这个包在多进程管理方面的一些原理和代码分析. 1. 问题一:是否需要显式调用pool的close和joi ...

  3. Asp.net core 环境配置

    参考: 在 ASP.NET Core 中使用多个环境 ASP.NET Core 中的配置 在项目的 Properties\launchSettings.json中可以配置多个环境 { "ii ...

  4. [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:

    --------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...

  5. Java线程之 InterruptedException 异常

    Java线程之 InterruptedException 异常   当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法. 抛 ...

  6. Maven内置属性、POM属性

    1.内置属性(Maven预定义,用户可以直接使用) ${basedir}表示项目根目录,即包含pom.xml文件的目录; ${version}表示项目版本; ${project.basedir}同${ ...

  7. Tomcat8源码笔记(六)连接器Connector分析

    根据 Tomcat8源码笔记(五)组件Container分析 前文分析,StandardService的初始化重心由 StandardEngine转移到了Connector的初始化,本篇记录下Conn ...

  8. Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest

    Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePull ...

  9. C-switch case之如何巧妙判断范围区域

    当判断整数时 示例: 判断整数范围 #include <stdio.h> int main() { unsigned ]={0x00,0x07,0x11,0x60,0x61,0x66}; ...

  10. 异常:android.os.NetworkOnMainThreadException

    场景: 安卓开发时在主线程访问网络解决: 将访问网络的代码使用Thread操作 Handler handler = new Handler(){ @Override public void handl ...