需求:当爬虫出现故障时,第一时间来通知维护人员。采用邮件的方式告知。
python 对Smtp协议支持的的smtplib
和email
模块
-
email
负责构造邮件 -
smtplib
负责发送邮件
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
# 定义格式
def formatInfo(val):
name, addr = parseaddr(val)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 发件人地址
fromAddr = 'a****@163.com'
# 邮箱密码
password = '**********'
# 收件人地址
toAddr = 'w***********@126.com'
# 163网易邮箱服务器地址
smtpServer = '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'] = formatInfo('Python爬虫<%s>' % fromAddr)
msg['to'] = formatInfo('Python管理员<%s>' % toAddr)
msg['subject'] = Header('Python爬虫运行状态', 'utf-8').encode()
# 发送邮件
server = smtplib.SMTP(smtpServer, 25)
server.login(fromAddr, password)
server.sendmail(fromAddr, [toAddr], msg.as_string())
print(1)
server.quit()