一、添加郵件頭,抄送等信息 1.mail["From"]表示發送者信息,包括姓名和郵件 2.mail["To"]表示接收者信息,包括姓名和郵件地址 3.mail["Subject"]表示摘要或者主題信息 from email.mime.text import MIMEText from email. ...
一、添加郵件頭,抄送等信息
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("從我自己的郵箱發送出去有的<[email protected]>","utf-8")#就是郵件頭,註意點:編解碼格式相一致 msg["From"] = header_from header_to = Header("去我自己的郵箱[email protected]","utf-8")#填寫接收者的信息 msg["To"] = header_to header_sub = Header("這是我的主題","utf-8") msg["Subject"] = header_to #構建發送者地址和登錄信息 from_addr = "[email protected]" from_pwd = "" #構建郵件接收者信息 to_addr = "[email protected]" 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 = "[email protected]" from_pwd = "" #構建郵件接收者信息 to_addr = "[email protected]" 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 = "[email protected]" #郵箱的授權碼 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.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料