(私信小編007即可自動獲取大量Python學習資料)
假設你這學期擔任某課程的學生助理,老師想佈置課程的作業並與下一節課提交,你將作業要求發到了班級群裡面,但是很多同學可能沒有及時查看群消息,為了穩妥起見,你覺得有必要給班級同學們發封郵件告知(假設這個方法有效),作為學習python的你一定不會把收件人的地址一個一個複製到收件箱中,來看看怎麼用python實現群發消息。
在講解實現代碼前先介紹一下STMP(Simple Mail Transfer Protocol)即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。通過SMTP協議所指定的服務器,就可以把E-mail寄到收信人的服務器上了,整個過程只要幾分鐘。SMTP服務器則是遵循SMTP協議的發送郵件服務器,用來發送或中轉發出的電子郵件。
SMTP 是一種TCP協議支持的提供可靠且有效電子郵件傳輸的應用層協議。SMTP 是建立在 TCP上的一種郵件服務,主要用於傳輸系統之間的郵件信息並提供來信有關的通知。
發送郵件的大致流程:
①設置郵件參數(郵箱服務器地址、發件人郵箱號、密碼、收件人郵箱號……)
②設置郵件信息(主題、發件人名、內容、附件……)
③登錄郵箱服務器
④登錄郵箱賬號
⑤發送郵件
⑥登出郵箱賬號
在實現前小夥伴需要在對應的郵箱中設置開啟SMTP/POP3的服務,舉個栗子QQ郵箱:
(一)登錄郵箱>打開設置>賬號
(二)開啟POP3/SMTP服務,請務必備份好你的授權碼
注:以下所涉及的非內置庫,需要小夥伴們自行下載
一、用smtplib內置庫和email庫實現發送郵件
以上的代碼只能實現簡單的文字內容發送,使用email庫中MIMEText只能寫入文本類型,
並不含添加附件的功能,那麼如何實現?需要用到email庫中的MIMEApplication,
另外用到了MIMEMultipart大盒子(可以將之前的MIMEText以及MIMEApplication一起放入大盒子中):
【補充說明】SMTP_SSL端口號設置為465,並不是所有的郵箱都是相同端口,每個郵箱服務器有對應不同的端口號,你可以點開相應郵箱的服務說明查看,例如QQ郵箱設置賬號>POP3/SMTP服務>(如何使用 Foxmail 等軟件收發郵件?)中寫明:
二、使用mailer庫和email庫實現發送郵件
另外還有一個更加便捷的第三方庫mailer,它能以更少的代碼實現以上email庫中的MIMEMultipart等功能
推文的代碼經過Md2All處理,相比以往代碼模塊展示更加友好。
閱讀更多 編程夢工廠 的文章