需要用到的模塊:email模塊,smtplib模塊
email模塊用來構(gòu)建文件內(nèi)容,smtplib模塊用來發(fā)郵件,這兩個都是Python內(nèi)置模塊。
smtplib模塊使用方法:
import smtplib
server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()
其中,SMTP是一個類,class(),要想調(diào)用 smtplib 模塊下、SMTP 類下的方法,應(yīng)該這樣寫:smtplib.SMTP.方法,賦值給server是為了減少代碼的冗余。
SMTP (Simple Mail Transfer Protocol)翻譯過來是“簡單郵件傳輸協(xié)議”的意思,SMTP 協(xié)議是由源服務(wù)器到目的地服務(wù)器傳送郵件的一組規(guī)則。可以簡單理解為:我們需要通過SMTP指定一個服務(wù)器,這樣才能把郵件送到另一個服務(wù)器。
host是指定連接的郵箱服務(wù)器,你可以指定服務(wù)器的域名。通過搜索“xx郵箱服務(wù)器地址”,就可以找到。port 是“端口”的意思。一般情況下SMTP默認端口號為25。
郵箱授權(quán)碼的獲取需要登錄QQ郵箱。
1)登錄QQ郵箱,點擊設(shè)置。
2)點擊賬戶,往下拉,打開 SMTP服務(wù)
3)會彈出一個密保窗口,按指示操作,會得到一個郵箱授權(quán)碼,即為代碼里需要的授權(quán)碼。
下面為全部代碼
import smtplib
# smtplib 用于郵件的發(fā)信動作
from email.mime.text import MIMEText
# email 用于構(gòu)建郵件內(nèi)容
from email.header import Header
# 用于構(gòu)建郵件頭
import csv
# 引用csv模塊,用于讀取郵箱信息
# 發(fā)信方的信息:發(fā)信郵箱,QQ郵箱授權(quán)碼
# 方便起見,你也可以直接賦值
from_addr = input('請輸入登錄郵箱:')
password = input('請輸入郵箱授權(quán)碼:')#授權(quán)碼需要自己登陸郵箱,進入設(shè)置,隱私設(shè)置,開啟指定的SMTP設(shè)置
# 發(fā)信服務(wù)器
smtp_server = 'smtp.qq.com'
# 郵件內(nèi)容
text='''hey 這是我用Python發(fā)的第一封郵件
人生苦短,我用Python
'''
# 待寫入csv文件的收件人數(shù)據(jù):人名+郵箱
# 記得替換成你要發(fā)送的名字和郵箱
data = [['wufeng ', 'wufeng@qq.com'],['kaxi', 'kaxi@qq.com']]
# 寫入收件人數(shù)據(jù)
with open('to_addrs.csv', 'w', newline='') as f:
writer = csv.writer(f)
for row in data:
writer.writerow(row)
# 讀取收件人數(shù)據(jù),并啟動寫信和發(fā)信流程
with open('to_addrs.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
to_addrs=row[1]
msg = MIMEText(text,'plain','utf-8')
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addrs)
msg['Subject'] = Header('python test')
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
server.login(from_addr, password)
server.sendmail(from_addr, to_addrs, msg.as_string())
# 關(guān)閉服務(wù)器
server.quit()
---------------------
作者:一個人旅行*-*
來源:CSDN
原文:https://blog.csdn.net/qq_42458954/article/details/87928779
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!