python如何發(fā)送郵件
使用郵箱測(cè)試時(shí),必須得開(kāi)啟郵箱的pop3/smtp服務(wù),并找到郵箱正確的SMTP服務(wù)器地址以及端口。這里以QQ郵箱為例
1、打開(kāi)QQ郵箱后,選擇“設(shè)置-賬戶”
推薦學(xué)習(xí):Python視頻教程
2、拉動(dòng)滾動(dòng)條到下方
3、開(kāi)啟pop3/smtp服務(wù),并保存該授權(quán)碼作為密碼使用
4、編寫Python代碼
# 首先導(dǎo)入email模塊構(gòu)造郵件 from email.mime.text import MIMEText # 構(gòu)造郵件,內(nèi)容為hello world msg = MIMEText('hello world') # 設(shè)置郵件主題 msg["Subject"] = "hello world" # 寄件者 msg["From"] = '' # 收件者 msg["To"] = '' # 然后是導(dǎo)入smtplib模塊發(fā)送郵件 import smtplib from_addr = raw_input("請(qǐng)輸入發(fā)送方郵箱賬號(hào):") password = raw_input("請(qǐng)輸入發(fā)送方郵箱密碼(這里輸入的內(nèi)容是開(kāi)啟pop3/smtp服務(wù)時(shí)騰訊給出的授權(quán)碼):") # smtp服務(wù)器地址 smtp_server = 'smtp.qq.com' # 收件人地址 to_addr = raw_input("請(qǐng)輸入收件人地址:") try: # smtp協(xié)議的默認(rèn)端口是25,QQ郵箱smtp服務(wù)器端口是465,第一個(gè)參數(shù)是smtp服務(wù)器地址,第二個(gè)參數(shù)是端口,第三個(gè)參數(shù)是超時(shí)設(shè)置,這里必須使用ssl證書,要不鏈接不上服務(wù)器 server = smtplib.SMTP_SSL(smtp_server, 465, timeout = 2) # 登錄郵箱 server.login(from_addr, password) #發(fā)送郵件,第一個(gè)參數(shù)是發(fā)送方地址,第二個(gè)參數(shù)是接收方列表,列表中可以有多個(gè)接收方地址,表示發(fā)送給多個(gè)郵箱,msg.as_string()將MIMEText對(duì)象轉(zhuǎn)化成文本 server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit() print 'success' except Exception,e: print 'Faild:%s' % e
5、收到郵件
python3使用smtplib發(fā)送utf-8郵件時(shí),提示UnicodeEncodeError,該如何解決:
不使用sendmail()方法,而是使用sendmsg()
不使用sendmail()方法 ser.sendmail(from_addr, to_addr, msg.as_string())
而是改為使用sendmsg() send_message(msg,mail_options=[],rcpt_options={},from_addr = None,to_addrs = None)