1. 程式人生 > 其它 >風變程式設計(Python自學筆記)第17關-郵件還能這麼發!

風變程式設計(Python自學筆記)第17關-郵件還能這麼發!

第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()