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 ...
随机推荐
- Spire.Cloud.Word 添加Word水印(文本水印、图片水印)
概述 Spire.Cloud.Word提供了watermarksApi接口可用于添加水印,包括添加文本水印(SetTextWatermark).图片水印(SetImageWatermark),本文将对 ...
- Mybatis分页插件PageHelper的学习与使用
目录 中文教程 PageHelper使用 后端程序员都知道,在Web系统中,分页是一种常见的功能,我之前写的分页方法都比较麻烦,移植性也不高,这就很不乐观了.作为一个积极开朗的程序员,怎么能不去了解P ...
- windows下安装python numpy+scipy+matlotlib+scikit-learn等流行库
(1)请不要直接使用 pip install scikit-learn pip install Numpy pip install Scipy pip install Matplotlib 命令安 ...
- Java泛型之上、下界通配符的理解(适合初学)
泛型的由来 为什么需要泛型 Java的数据类型一般都是在定义时就需要确定,这种强制的好处就是类型安全,不会出现像弄一个ClassCastException的数据给jvm,数据安全那么执行的clas ...
- Android组合Windows环境下Frida的安装步骤
Frida是什么 我觉得官网已经说得很清楚了.简单的说就是一款动态代码检测工具,可用于各种系统,这里的主要用途是动态检测Android代码,配合Windows系统环境使用. Frida ...
- 《吊打面试官》系列-HashMap
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 上已经收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Sta ...
- 第八次作业-非确定的自动机NFA确定化为DFA
NFA 确定化为 DFA 子集法: f(q,a)={q1,q2,…,qn},状态集的子集 将{q1,q2,…,qn}看做一个状态A,去记录NFA读入输入符号之后可能达到的所有状态的集合. 步骤: 1. ...
- 华为云北京四业务,访问北京一OBS桶,配置指南
[摘要] 华为云跨数据中心,从北京四访问北京一的OBS桶里面的数据.免去数据迁移的麻烦 1 驱动力 跨region访问OBS桶里面的数据时.如果不走云连接,一个OBS桶域名对应的IP地址,是 ...
- 转:logback的使用和logback.xml详解
一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...
- shell脚本持续更改
1.用shell查看磁盘是否大于80%并发送邮箱告警. 分析如何查看磁盘占用: # df -h | grep /dev/vda1 | awk '{print $5}' |cut -d "%& ...