Python批量發(fā)送郵件

1.SMTP協(xié)議

  • SMTP(Simple Mail Transfer Protocol) 即簡單郵件傳輸協(xié)議,是一個相對簡單的基于文本的協(xié)議, 在其之上指定了一條消息的一個或多個接收者(在大多數(shù)情況下被確認(rèn)是存在的),然后消息文本會被傳輸??梢院芎唵蔚赝ㄟ^telnet程序來測試一個SMTP服務(wù)器。SMTP使用TCP端口25。要為一個給定的域名決定一個SMTP服務(wù)器,需要使用MX (Mail eXchange) DNS;

2.Python的smtplib庫

  • Python對SMTP支持有smtplib和email兩個模塊,email負(fù)責(zé)構(gòu)造郵件,smtplib負(fù)責(zé)發(fā)送郵件;

    創(chuàng)新互聯(lián)是一家專業(yè)提供饒陽企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為饒陽眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

  • smtplib.SMTP(host="",port=0,local_hostname=None,[timeout,]source_address=None) :SMTP類定義作為SMTP的構(gòu)造函數(shù)定義了一個SMTP客戶端會話對象,功能是與smtp服務(wù)器建立連接,在連接成功后就可以向服務(wù)器發(fā)送相關(guān)請求,比如登陸、校驗(yàn)、發(fā)送、退出等。參數(shù)host是遠(yuǎn)程smtp主機(jī)地址、port是鏈接端口,默認(rèn)25、local_hostname是將本地主機(jī)的FQDN(完整域名)發(fā)送 HELO/EHLO(標(biāo)識用戶身份)的指令、timeout為鏈接或嘗試鏈接多少秒后超時、source_address是綁定到具有多個網(wǎng)絡(luò)接口的計算機(jī)中的某個特定源地址上或特定的TCP端口,它需要一個元組(主機(jī),端口);

3.開啟郵箱SMTP協(xié)議

在使用SMTP協(xié)議發(fā)送郵件之前需要先查看發(fā)件人的郵箱是否開啟SMTP協(xié)議,如qq郵箱的開啟協(xié)議的方式是:找到郵箱的設(shè)置—>在設(shè)置頁面中選擇賬戶設(shè)置—>選擇開啟服務(wù)中的SMTP服務(wù)開啟,點(diǎn)擊開啟后會彈出一個驗(yàn)證保密窗口,驗(yàn)證成功后就會自動生成授權(quán)碼,這個授權(quán)碼在發(fā)送郵件時會用到;

4.使用SMTP發(fā)送郵件

  • 在使用SMTP發(fā)送郵件發(fā)送郵件之前我們需要先導(dǎo)入 smtplib 模塊和 email.mime.text 模塊中的 MIMEText ;

  • 然后構(gòu)造一個MIMEText消息對象,其中第一個參數(shù)就是郵件正文、第二個參數(shù)是MIME的格式,第三個參數(shù)是編碼。將發(fā)件人、收件人、主題都傳入這個對象中;

  • 然后模擬登錄服務(wù)器,使用smtplib庫中的SMTP類創(chuàng)建SMTP的操作對象并連接smtp目標(biāo)服務(wù)器,可以是163、QQ等,如果是163郵箱服務(wù)器地址是 smtp.163.com ,如果是qq郵箱服務(wù)器地址是 smtp.qq.com 。 訪問郵箱的服務(wù)器之后需要使用 login('郵箱地址','郵箱授權(quán)碼') 方法根據(jù)自己的賬號登錄服務(wù)器(這里的授權(quán)碼就是之前開啟SMTP協(xié)議生成的授權(quán)碼),如果不登錄是不能發(fā)郵件的;

  • 登錄之后再使用 send_message() 方法將發(fā)送郵件的消息傳遞給SMTP對象,開始發(fā)送郵件;


import smtplib
from email.mime.text import MIMEText
from const_file import passwd
def send_email(from_addr, to_addr, subject, password):
    msg = MIMEText("郵件正文",'html','utf-8')
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Subject'] = subject
    smtp_server = smtplib.SMTP('smtp.qq.com')
    smtp_server.login(from_addr, password)
    smtp_server.send_message(msg=msg)
if __name__ == "__main__":
    # passwd填寫認(rèn)證密碼,不是登錄密碼
    send_email("郵箱地址", "郵箱地址", "這是一封測試郵件", passwd)

5.郵件的批量發(fā)送


import smtplib
from email.mime.text import MIMEText
from const_file import passwd
def send_email(from_addr, to_addr, subject, password):
    msg = MIMEText("郵件正文",'html','utf-8')
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Subject'] = subject
    smtp_server = smtplib.SMTP('smtp.qq.com')
    smtp_server.login(from_addr, password)
    smtp_server.send_message(msg=msg)
if __name__ == "__main__":
    send_list = ['a@163.com', 'b@163.com', 'c@163.com']
    for to_addr in send_list:
        send_email("郵箱地址", to_addr, "這是一封測試郵件", passwd)

參考: https://www.9xkd.com/user/plan-view.html?id=3823903948

分享名稱:Python批量發(fā)送郵件
新聞來源:http://bm7419.com/article6/jjdhog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站自適應(yīng)網(wǎng)站、電子商務(wù)、網(wǎng)站導(dǎo)航外貿(mào)網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營