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.歡迎關注微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,后台回復”禮包“,獲取大數據學習資料

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM