Python连载57- 邮件头和主题、解析邮件
一、添加邮件头,抄送等信息
1.mail["From"]表示发送者信息,包括姓名和邮件
2.mail["To"]表示接收者信息,包括姓名和邮件地址
3.mail["Subject"]表示摘要或者主题信息
from email.mime.text import MIMEText from email.header import Header msg = MIMEText("Hello world","plain","utf-8") #用utf-8编码是因为很可能内容包含非英文字符 header_from = Header("从我自己的邮箱发送出去有的<1215217867@qq.com>","utf-8")#就是邮件头,注意点:编解码格式相一致 msg["From"] = header_from header_to = Header("去我自己的邮箱1215217867@qq.com","utf-8")#填写接收者的信息 msg["To"] = header_to header_sub = Header("这是我的主题","utf-8") msg["Subject"] = header_to #构建发送者地址和登录信息 from_addr = "1215217867@qq.com" from_pwd = "" #构建邮件接收者信息 to_addr = "1215217867@qq.com" smtp_srv = "smtp.qq.com" try: import smtplib srv = smtplib.SMTP_SSL(smtp_srv.encode(),465) srv.login(from_addr,from_pwd) srv.sendmail(from_addr,[to_addr],msg.as_string()) srv.quit() except Exception as a: print(a)
二、同时发送html和text格式
1.构建一个MIMEMutipart格式邮件
2.MIMEMultipart的subtype设置成alternative格式
3.添加HTML和text邮件
from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart #构建一个MIMEMultipart邮件 msg = MIMEMultipart("alternative") #构建一个HTML邮件内容 html_content = """ <!DOCTYPE html> <html lang="en" <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>这是一封HTML格式邮件<h1> </body> </html> """ msg_html = MIMEText(html_content,"html","utf-8") msg.attach(msg_html) msg_text = MIMEText("just text content","plain","utf-8") msg.attach(msg_text) #发送email地址 #构建发送者地址和登录信息 from_addr = "1215217867@qq.com" from_pwd = "" #构建邮件接收者信息 to_addr = "1215217867@qq.com" smtp_srv = "smtp.qq.com" try: import smtplib srv = smtplib.SMTP_SSL(smtp_srv.encode(),465) srv.login(from_addr,from_pwd) srv.sendmail(from_addr,[to_addr],msg.as_string()) srv.quit() except Exception as a: print(a)
三、POP3协议接受邮件
1.本质上是MDA到MUA的一个过程
2.从MDA下载下来的是一个完整的邮件结构体,需要解析才能得到每个具体
3.步骤:
(1)用poplib下载邮件结构体原始内容
(2)准备相应的内容(邮件地址,密码,POP3实例)
(3)身份认证
(4)根据相应序号,得到某一封信的数据流
(5)利用解析函数进行解析出相应的邮件结构体
(6)用email解析邮件的具体内容
#导入相关的包 #poplib负责从MDA到MUA下载 import poplib #以下包负责相关邮件结构解析 from email.parser import Parser from email.header import Header from email.utils import parseaddr #得到邮件的原始内容 #这个过程主要负责从MDA到MUA的下载并且使用Parse粗略解析 def getMsg(): #准备相应的信息 email = "1215217867@qq.com" #邮箱的授权码 pwd = "" #pop3服务器地址 pop3_srv = "pop.qq.com"#端口995 #ssl代表安全通道 srv = poplib.POP3_SSL(pop3_srv) #user代表email地址 srv.user(email) #pass_代表密码 srv.pass_(pwd) #以下操作根据具体业务具体使用 #stat返回的是邮件数量以及占用空间 #注意stat返回了一个tuple格式 msgs,counts = srv.stat() print("Message:{0},Size:{1}".format(msgs,counts)) #list返回所有邮件编号列表 #mails是所有邮件编号列表 rsp,mails,octets = srv.list() #可以查看返回的mails列表,类似于[b"1 82923",b"23 2184",.....] print(mails) #获取最新一封邮件,追忆,邮件索引是从1开始的,最新代表索引号最高 index = len(mails) #retr负责返回一个具体索引号的一封信的内容,此内容不具有可读性 #lines存储邮件的最原始文本的每一行 rsp,lines,octets = srv.retr(index) #获取整个邮件的结构体 msg_count = b"\r\n".join(lines).decode("utf-8") #解析出邮件整个结构体 #参数是解码后的邮件整体 msg = Parser().parsestr(msg_count)#这一行代表解码 #关闭链接 srv.quit() return msg if __name__ == "__main__": #得到邮件的原始内容 msg = getMsg() print(msg) #精确解析邮件内容 # parseMsg(msg,0)
五、源码
D57_1_MailHeadAndCC.py
D57_2_SendHTMLAndTextMail.py
D57_3_AnalysisMaii.py
https://github.com/ruigege66/Python_learning/blob/master/D57_1_MailHeadAndCC.py
https://github.com/ruigege66/Python_learning/blob/master/D57_2_SendHTMLAndTextMail.py
https://github.com/ruigege66/Python_learning/blob/master/D57_3_AnalysisMaii.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
Python连载57- 邮件头和主题、解析邮件的更多相关文章
- python之poplib模块下载并解析邮件
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之poplib模块下载并解析邮件 #https://github.com/michaelliao ...
- python开发_email_读取邮件头信息
在python中的类库中,python自带了email模块. 在email模块中,我们可以email类库实现对邮件的读取,和邮件的发送等功能. 本文先来谈谈在python中,利用email模块读取邮件 ...
- Python连载56-发送带有附件、正文为HTML的邮件
一.HTML格式怎么发送右键 1.准备HTML代码作为内容 2.把邮件的subtype设置为html 3.发送 4.举个例子:自己发给自己一个HTML格式的文件 from email.mime.tex ...
- Python中使用SMTP发送邮件以及POP收取邮件
假设我们自己的电子邮件地址是from@163.com,对方的电子邮件地址是to@sina.com(这里的地址虚拟的),现在我们用Outlook或者Foxmail之类的软件写好邮件,填上对方的Email ...
- JavaMail入门第五篇 解析邮件
上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...
- python笔记37-史上最好用的发邮件zmail
简介 python发邮件之前用的是smtplib,代码太过于复杂,学习成本大,并且很多人学不会.之前专门写过一篇https://www.cnblogs.com/yoyoketang/p/7277259 ...
- 教你看懂邮件头信息<转载>
MIME对于邮件系统的扩展是巨大的,因为在MIME出现以前,信件内容如果要包括声音和动画,就必须把它变为ASCII码或把二进制的信息变成可以传送的编码标准,而接收方必须经过解码才可以获得声音和图画信息 ...
- python3接收、解析邮件
邮件接收 python3可以使用poplib.POP3进行邮件接收,具体如下: import poplib from email.parser import Parser def get_email( ...
- Python连载12-shutil模块
一.shutil模块 1.函数:copy() (1)用法:复制文件0 (2)格式:copy(来源路径,目标路径) (3)返回值:返回目标路径 (4)注意:拷贝的同时可以给文件重命名 source_pa ...
随机推荐
- 后端传给前端Long类型数据,导致精度丢失
1.前几天遇到了一个问题,后端向前端传递一个Long类型的数据,前端拿到的值不对. 2.当Long类型的数据大于17位时候,就会出现精度丢失的情况. 3.解决办法 我们采用的解决方案是将后端的Long ...
- 最小化安装CentOS 7 系统
目录 CentOS 程序准备 开始安装系统 创建虚拟机 安装系统 CentOS 运维最常接触的系统就是CentOS系统,无论是版本 6 还是版本 7 而且在安装系统时,讲究最小化安装系统,之后当需要什 ...
- Java基础部分(11~20)
11."=="和 equals 方法究竟有什么区别? (单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚) ==操作符专门用来比较两 ...
- 洛谷 题解 2165 [AHOI2009]飞行棋
本蒟蒻又来发题解了, 看到这个题目,本蒟蒻直接开始推公式.. 嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π)); 然后对比各条弦长的平方和与直径的平方. ...
- Link Binary With Libraries中添加的时候 也找不到libz.dylib 库
接到一个项目4个静态库找不到 在 Link Binary With Libraries中添加的时候 也找不到libz.dylib 郁闷了 原来是ios9后 原来的dylib后缀名的库全部修改tbd ...
- Spring Boot结合Mybatis
pom文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- 移动开发在路上-- IOS移动开发系列 网络交互四(2)
接着上次的讲,这次我们讲 网络请求的封装 打开创建的项目,让我们一起来继续完成他, 首先我们来创建一个NSobject 的文件 圈住出来的轻一点要注意.千万不要搞错了 创建好之后,开始编写代码, 我 ...
- Zookeeper选取机制
1)半数机制:集群中半数以上机器存活,集群可用.所以Zookeeper适合安装奇数台服务器. 2)Zookeeper虽然在配置文件中并没有指定Master和Slave.但是,Zookeeper工作时, ...
- [TimLinux] Python Django myblog启动
1. myblog介绍 自己给自己定的一个学习项目,用于: 使用学到的Python Web开发技术,框架django 使用学到的CSS技术,实现前端功能 使用学到的Axure工具,画出前端页面功能草图 ...
- 1010 Radix (25 分),PTA
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536 题意:给定n1.n2两个数,求可以是两 ...