正常企业做数据抓取经常会遇到各种故障问题,那么在人不能随时盯着爬虫电脑来防止错误,就需要用email来向自己报告。
SMTP邮件协议是Python内置是支持的,他不仅可以发送纯文本的邮件,也可以发html邮件,选择性比较多。Python对SMTP的支持有smtplib和email两个模块,emial负责构造邮件,smtplib负责发送邮件。
下文就是我用163邮箱来发送邮件的,开启SMTP功能,采用163的电子邮件服务器smtp.163.com
构造纯文本邮件
# msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403', 'plain', 'utf-8')
MIMEText对象需要3个参数。
邮件正文,
MIME的类型,plain表示纯文本发送,html,表示网页发送。
设置邮件格式,这里彩了utf-8保证兼容多种语言。
构造网页邮件。
msg = MIMEText('<html><body><h1>hello</h1><p>异常网页<a href= "http://www.baidu.com">百度</a><p></body></html>', 'html', 'utf-8')
完整发邮件代码
# coding:utf-8标签:utf,addr,Python,爬虫,server,msg,邮件 From: https://blog.51cto.com/u_13488918/5877910
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 = '******@163.com' #这里换成你的邮件地址
# 邮箱密码
password = '*******' #这里换成你的邮箱密码。
# 收件人地址
to_addr = '******@126.com' #收件人的地址。我这里采用的是126邮箱,我发现QQ邮箱被拒收了。
# 163网易邮件服务器地址
smtp_server = 'smtp.163.com'
# 设置邮件信息
# msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403', 'plain', 'utf-8')
msg = MIMEText('<html><body><h1>hello</h1><p>异常网页<a href= "http://www.baidu.com">百度</a><p></body></html>', 'html', 'utf-8')
msg['from'] = _format_addr('Python绿色通道<%s>' % from_addr)
msg['to'] = _format_addr('Python绿色通道管理员<%s>' % to_addr)
msg['subject'] = Header('Python绿色通道爬虫运行状态', '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()