python读取邮件标题_Python连载57- 邮件头和主题、解析邮件
一、添加郵件頭,抄送等信息
1.mail["From"]表示發(fā)送者信息,包括姓名和郵件
2.mail["To"]表示接收者信息,包括姓名和郵件地址
3.mail["Subject"]表示摘要或者主題信息
from email.mime.text importMIMETextfrom email.header importHeader
?
msg= MIMEText("Hello world","plain","utf-8")
?#用utf-8編碼是因?yàn)楹芸赡軆?nèi)容包含非英文字符
header_from= Header("從我自己的郵箱發(fā)送出去有的<1215217867@qq.com>","utf-8")#就是郵件頭,注意點(diǎn):編解碼格式相一致
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#構(gòu)建發(fā)送者地址和登錄信息
from_addr= "1215217867@qq.com"from_pwd= ""
#構(gòu)建郵件接收者信息
to_addr= "1215217867@qq.com"smtp_srv= "smtp.qq.com"
try:importsmtplib
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()exceptException as a:print(a)
二、同時(shí)發(fā)送html和text格式
1.構(gòu)建一個(gè)MIMEMutipart格式郵件
2.MIMEMultipart的subtype設(shè)置成alternative格式
3.添加HTML和text郵件
from email.mime.text importMIMETextfrom email.mime.multipart importMIMEMultipart
?#構(gòu)建一個(gè)MIMEMultipart郵件
msg= MIMEMultipart("alternative")#構(gòu)建一個(gè)HTML郵件內(nèi)容
html_content= """
Title這是一封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)#發(fā)送email地址
#構(gòu)建發(fā)送者地址和登錄信息
from_addr= "1215217867@qq.com"from_pwd= ""
#構(gòu)建郵件接收者信息
to_addr= "1215217867@qq.com"smtp_srv= "smtp.qq.com"
try:importsmtplib
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()exceptException as a:print(a)
?
三、POP3協(xié)議接受郵件
1.本質(zhì)上是MDA到MUA的一個(gè)過程
2.從MDA下載下來的是一個(gè)完整的郵件結(jié)構(gòu)體,需要解析才能得到每個(gè)具體
3.步驟:
(1)用poplib下載郵件結(jié)構(gòu)體原始內(nèi)容
(2)準(zhǔn)備相應(yīng)的內(nèi)容(郵件地址,密碼,POP3實(shí)例)
(3)身份認(rèn)證
(4)根據(jù)相應(yīng)序號(hào),得到某一封信的數(shù)據(jù)流
(5)利用解析函數(shù)進(jìn)行解析出相應(yīng)的郵件結(jié)構(gòu)體
(6)用email解析郵件的具體內(nèi)容
#導(dǎo)入相關(guān)的包
#poplib負(fù)責(zé)從MDA到MUA下載
importpoplib#以下包負(fù)責(zé)相關(guān)郵件結(jié)構(gòu)解析
from email.parser importParserfrom email.header importHeaderfrom email.utils importparseaddr#得到郵件的原始內(nèi)容
#這個(gè)過程主要負(fù)責(zé)從MDA到MUA的下載并且使用Parse粗略解析
defgetMsg():#準(zhǔn)備相應(yīng)的信息
email= "1215217867@qq.com"
#郵箱的授權(quán)碼
pwd= ""
#pop3服務(wù)器地址
pop3_srv= "pop.qq.com"#端口995
?#ssl代表安全通道
srv=poplib.POP3_SSL(pop3_srv)#user代表email地址
srv.user(email)#pass_代表密碼
srv.pass_(pwd)
?#以下操作根據(jù)具體業(yè)務(wù)具體使用
#stat返回的是郵件數(shù)量以及占用空間
#注意stat返回了一個(gè)tuple格式
msgs,counts=srv.stat()print("Message:{0},Size:{1}".format(msgs,counts))
?#list返回所有郵件編號(hào)列表
#mails是所有郵件編號(hào)列表
rsp,mails,octets=srv.list()#可以查看返回的mails列表,類似于[b"1 82923",b"23 2184",.....]
print(mails)
?#獲取最新一封郵件,追憶,郵件索引是從1開始的,最新代表索引號(hào)最高
index=len(mails)#retr負(fù)責(zé)返回一個(gè)具體索引號(hào)的一封信的內(nèi)容,此內(nèi)容不具有可讀性
#lines存儲(chǔ)郵件的最原始文本的每一行
rsp,lines,octets=srv.retr(index)
?#獲取整個(gè)郵件的結(jié)構(gòu)體
msg_count= b"\r\n".join(lines).decode("utf-8")#解析出郵件整個(gè)結(jié)構(gòu)體
#參數(shù)是解碼后的郵件整體
msg= Parser().parsestr(msg_count)#這一行代表解碼
?#關(guān)閉鏈接
srv.quit()returnmsg
?if __name__ == "__main__":#得到郵件的原始內(nèi)容
msg=getMsg()print(msg)#精確解析郵件內(nèi)容
#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.歡迎關(guān)注微信公眾號(hào):傅里葉變換,個(gè)人公眾號(hào),僅用于學(xué)習(xí)交流,后臺(tái)回復(fù)”禮包“,獲取大數(shù)據(jù)學(xué)習(xí)資料
總結(jié)
以上是生活随笔為你收集整理的python读取邮件标题_Python连载57- 邮件头和主题、解析邮件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试建议
- 下一篇: Python学习 数据结构列表字典元组