from email.header import Header from email.mime.text import MIMEText 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 = 'xxxxxxxx@163.com' #郵箱密碼 password = 'pass' #收件人地址 to_addr = 'xxxxxxxx@qq.com' #163網易郵箱服務器地址 smtp_server = 'smtp.163.com' #設置郵件信息 msg = MIMEText('Python爬蟲運行異常,異常信息爲遇到HTTP 403', 'plain', 'utf-8') 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) server.login(from_addr, password) server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit() Email起到提醒做用,當爬蟲過程當中遇到異常或者服務器遇到問題,能夠經過Email及時向本身報告。 發送郵件的協議是STMP,python內置對SMTP的支持,能夠發送純文本郵件、html郵件以及帶附件的郵件。 python對SMTP的支持有smtplib和email兩個模塊,email負責構造郵件,smtplib負責發送郵件。 from email.mime.text import MIMEText msg = MIMEText('Python爬蟲運行異常,異常信息爲遇到HTTP 403', 'plain', 'utf-8') 構造MIMEText對象時須要三個參數 郵件正文,'Python爬蟲運行異常,異常信息爲遇到HTTP 403' MIMEL的subtype,'plain'表示純文本 編碼格式,'utf-8'
import smtplib from email.mime.text import MIMEText from email.header import Header # 第三方 SMTP 服務 mail_host="smtp.XXX.com" #設置服務器 mail_user="XXXX" #用戶名 mail_pass="XXXXXX" #口令 sender = 'from@runoob.com' receivers = ['429240967@qq.com'] # 接收郵件,可設置爲你的QQ郵箱或者其餘郵箱 message = MIMEText('Python 郵件發送測試...', 'plain', 'utf-8') message['From'] = Header("菜鳥教程", 'utf-8') message['To'] = Header("測試", 'utf-8') subject = 'Python SMTP 郵件測試' message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) # 25 爲 SMTP 端口號 smtpObj.login(mail_user,mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print "郵件發送成功" except smtplib.SMTPException: print "Error: 沒法發送郵件"