python如何發(fā)送郵件
使用郵箱測試時,必須得開啟郵箱的pop3/smtp服務,并找到郵箱正確的SMTP服務器地址以及端口。這里以QQ郵箱為例
1、打開QQ郵箱后,選擇“設置-賬戶”
推薦學習:Python視頻教程
2、拉動滾動條到下方
3、開啟pop3/smtp服務,并保存該授權(quán)碼作為密碼使用
4、編寫Python代碼
# 首先導入email模塊構(gòu)造郵件 from email.mime.text import MIMEText # 構(gòu)造郵件,內(nèi)容為hello world msg = MIMEText('hello world') # 設置郵件主題 msg["Subject"] = "hello world" # 寄件者 msg["From"] = '' # 收件者 msg["To"] = '' # 然后是導入smtplib模塊發(fā)送郵件 import smtplib from_addr = raw_input("請輸入發(fā)送方郵箱賬號:") password = raw_input("請輸入發(fā)送方郵箱密碼(這里輸入的內(nèi)容是開啟pop3/smtp服務時騰訊給出的授權(quán)碼):") # smtp服務器地址 smtp_server = 'smtp.qq.com' # 收件人地址 to_addr = raw_input("請輸入收件人地址:") try: # smtp協(xié)議的默認端口是25,QQ郵箱smtp服務器端口是465,第一個參數(shù)是smtp服務器地址,第二個參數(shù)是端口,第三個參數(shù)是超時設置,這里必須使用ssl證書,要不鏈接不上服務器 server = smtplib.SMTP_SSL(smtp_server, 465, timeout = 2) # 登錄郵箱 server.login(from_addr, password) #發(fā)送郵件,第一個參數(shù)是發(fā)送方地址,第二個參數(shù)是接收方列表,列表中可以有多個接收方地址,表示發(fā)送給多個郵箱,msg.as_string()將MIMEText對象轉(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郵件時,提示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)