Python發送郵件使用的協議是STMP,Python內置對STMP的支持,可以發送純文本郵件、HTML郵件及帶附件的郵件。Python對STMP支持有兩個模塊email和smtplib,email負責構造郵件,stmplib負責發送郵件。
1、申請一個163郵箱
地址:https://mail.163.com/register/index.htm?from=163mail&utm_source=163mail,完成郵箱的申請,然后開啟SMTP功能。
,
開啟服務后會給一個授權碼,需要保存好,后面需要用到。
2、郵件的發送
完成第1步之后,選構造一個純文本郵件並發送給指定郵箱:
from email.mime.text import MIMEText from email.header import Header from email.utils import parseaddr,formataddr import smtplib def _format_addr(s): name,addr = parseaddr(s) return formataddr((Header(name,'utf-8').encode(),addr)) '發件人地址,第一步申請的郵箱地址' from_addr = 'email@163.com' '郵箱密碼(第一步開通SMTP服務后給的授權碼)' pwd = 'passwoerd' '收件人地址' to_addr = '41234444@qq.com' '163郵箱服務器地址' smtp_server = 'smtp.163.com' '設置郵件信息' msg = MIMEText('Python發送純文本郵件Demo','plain','utf-8') ''' 構造MIMEText需要三個參數:郵件正文、MIME的subtype,plain表示純文本、編碼格式 ''' msg['From'] = _format_addr('測試郵件<%s>'%from_addr) msg['To'] = _format_addr('收件人<%s>'%to_addr) msg['Subject'] = Header('測試','utf-8').encode() '發送郵件' server = smtplib.SMTP(smtp_server,25)#25為端口號 server.login(from_addr,pwd) server.sendmail(from_addr,[to_addr],msg.as_string()) server.quit()
結果:
發送html郵件只需要在構造文本的時候,將plain參數改為html即可:
'設置郵件信息' msg = MIMEText('<a href="http://www.baidu.com" target="_blank">點一下去百度</a>','html','utf-8')
結果: