風變程式設計(Python自學筆記)第17關-郵件還能這麼發!
阿新 • • 發佈:2021-06-20
第17關—郵件還能這麼發!
群發郵件模板:
# smtplib 用於郵件的發信動作 import smtplib # email 用於構建郵件內容 from email.mime.text import MIMEText # 用於構建郵件頭 from email.header import Header #引用csv模組 import csv # 發信方的資訊:發信郵箱,QQ郵箱授權碼 #from_addr=input('請輸入發件人郵箱:') #passport=input('請輸入發件人郵箱的授權碼:') from_addr='XXXXXX' passport='XXXXXX' # 發信伺服器 smtp_server='smtp.qq.com' #郵件內容 text = '''親愛的XXX,你好! 期末複習周請抓緊複習! go for it! just do it! ''' # 待寫入csv檔案的收件人資料:人名+郵箱 # 記得替換成你要傳送的名字和郵箱 #如:data = [['顧佳凱1號 ', '[email protected]'],['顧佳凱2號', '[email protected]']] data=[['姓名','郵箱地址'],['xxx','xxx']] # 寫入收件人資料 with open(r'xxx.csv檔案的絕對路徑','w',newline='') as f: writer=csv.writer(f) for row in data: writer.writerow(row) # 讀取收件人資料,並啟動寫信和發信流程 with open(r'xxx.csv檔案的絕對路徑','r',newline='',encoding='utf-8') as f: reader=csv.reader(f) for row in reader: to_addrs=row[1] msg = MIMEText(text,'plain','utf-8')# 郵箱正文內容,第一個引數為內容,第二個引數為格式(plain 為純文字),第三個引數為編碼 #郵件頭資訊 msg['From'] = Header(from_addr) msg['To'] = Header(",".join(to_addrs)) msg['Subject'] = Header('xxx') # 開啟發信服務 server = smtplib.SMTP() server.connect(smtp_server, 25) # 登入發信郵箱 server.login(from_addr, passport) # 傳送郵件 try: server.sendmail(from_addr, to_addrs, msg.as_string()) print('恭喜,傳送成功') except: print('傳送失敗,請重試') # 關閉伺服器 server.quit()