這篇文章主要講解了“怎么用Python自動(dòng)群發(fā)郵件”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用Python自動(dòng)群發(fā)郵件”吧!
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站制作(企業(yè)站、自適應(yīng)網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
如何把收件人名字一一對(duì)應(yīng)
前提條件,我的解釋器是 IDLE 3.6 (用慣了,不想升級(jí))
以兩個(gè)郵箱為例子。
to_emails=['123@qq.com','456@qq.com'] to_names=['怪盜基德','上杉繪梨衣']
自動(dòng)群發(fā)郵件,處理收件人姓名時(shí)大多是用join函數(shù)處理,
形成以逗號(hào)分隔的字符串。
官方大大說:Header接受的第一個(gè)參數(shù)的數(shù)據(jù)類型必須要是字符串或者字節(jié),列表是不能解碼。
to_names=['怪盜基德','上杉繪梨衣'] msg['To'] = Header(",".join)
But,我試了一下,沒有用,兩個(gè)郵箱的收件人都是怪盜基德,上杉繪梨衣。不確定是什么原因,不排除是版本問題,有網(wǎng)友知道可以跟我說一下哈。
1、遍歷兩個(gè)列表
import smtplib from email.mime.text import MIMEText from email.header import Header import time from_name = input('請(qǐng)輸入發(fā)件人:') from_addr = input('請(qǐng)輸入發(fā)件人郵箱:') password = input('請(qǐng)輸入發(fā)件人郵箱授權(quán)碼:') to_namelist = [] to_addrs = [] number=0 while True: name=input('請(qǐng)輸入收件人:') to_namelist.append(name) email=input('請(qǐng)輸入收件兒郵箱:') to_addrs.append(email) temp=input('(可群發(fā))是否繼續(xù)輸入郵箱,輸入n加回車鍵退出,輸入任意鍵繼續(xù):') number=number+1 if temp=='n': break smtp_server ='smtp.qq.com' input_subject = input('請(qǐng)輸入郵件主題:') text = input('請(qǐng)輸入郵件內(nèi)容:') for i in range(number): to_name=to_namelist[i] to_addr=to_addrs[i] msg = MIMEText(text,'plain','utf-8') msg['From'] = Header(from_name) msg['To'] = Header(to_name) msg['Subject'] = Header(input_subject) server = smtplib.SMTP_SSL() server.connect(smtp_server,465) server.login(from_addr, password) server.sendmail(from_addr,to_addr, msg.as_string()) server.quit() now=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) print(now) print('郵件發(fā)送成功!')
2、將兩個(gè)列表通過csv放進(jìn)Excel表格里,再通過讀取Excel表格進(jìn)行循環(huán)
import time import smtplib from email.mime.text import MIMEText from email.header import Header import csv #發(fā)件人信息 from_addr='1499823573@qq.com' password='xzrbanqjofkugaei' #如果有Excel表格就不用新建了,沒有csv就得考慮新建csv文件 #方式一:通過現(xiàn)有列表新建csv文件 #data=[['怪盜基德','123@qq.com'],['上杉繪梨衣','@456.com']] #方式二:通過輸入形成列表再新建csv文件 dataemail=[] dataname=[] data=[] number=0 while True: input_name=input('請(qǐng)輸入收件人稱呼(可隨意寫):') dataname.append(input_name) input_email=input('請(qǐng)輸入收件人郵箱賬號(hào):') dataemail.append(input_email) b=input('是否繼續(xù)輸入,n退出,任意鍵繼續(xù):') number=number+1 if b=='n': break i=0 for i in range(number): data.append([dataname[i],dataemail[i]]) with open('C:/Users/ASUS/Desktop/郵箱數(shù)據(jù).csv','a',newline='') as f: writer=csv.writer(f) for row in data: writer.writerow(row) input_fromname=input('請(qǐng)輸入發(fā)件人:') input_subject=input('請(qǐng)輸入郵件主題:') text=input('請(qǐng)輸入郵件群發(fā)內(nèi)容:') with open('C:/Users/ASUS/Desktop/郵箱數(shù)據(jù).csv','r') as f: reader=csv.reader(f) for row in reader: to_addrs=row[1] to_name=row[0] #text='ncoqw' msg=MIMEText(text,'plain','utf-8') msg['From']=Header(input_fromname) msg['To']=Header(to_name) msg['Subject']=Header(input_subject) server=smtplib.SMTP_SSL() server.connect('smtp.qq.com',465) server.login(from_addr,password) server.sendmail(from_addr,to_addrs,msg.as_string()) server.quit() now=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) print(now) print('郵件發(fā)送成功!')
這里有個(gè)點(diǎn)剛開始沒想到
data.append([dataname[i],dataemail[i]])
感謝各位的閱讀,以上就是“怎么用Python自動(dòng)群發(fā)郵件”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)怎么用Python自動(dòng)群發(fā)郵件這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!