文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.3 Email 提醒
大家可能会奇怪Email在Python爬虫开发中有什么用呢?Email主要起到提醒作用,当爬虫在运行过程中遇到异常或者服务器遇到问题,可以通过Email及时向自己报告。
发送邮件的协议是STMP,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。
在讲解发送Email之前,首先申请一个163邮箱,开启SMTP功能,采用的是网易的电子邮件服务器smtp.163.com,如图5-5所示。
图5-5 163邮箱开启SMTP
将SMTP开启之后,我们来构造一个纯文本邮件:
from email.mime.text import MIMEText msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403', 'plain', 'utf-8')
构造MIMEText对象时需要3个参数:
·邮件正文。
·MIME的subtype,传入“plain”表示纯文本,最终的MIME就是“text/plain”。
·设置编码格式,UTF-8编码保证多语言兼容性。
接着设置邮件的发件人、收件人和邮件主题等信息,并通过STMP发送出去。代码如下:
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()
有时候我们发送的可能不是纯文本,需要发送HTML邮件,将异常网页信息发送回去。在构造MIMEText对象时,把HTML字符串传进去,再把第二个参数由“plain”变为“html”就可以了。示例如下:
msg = MIMEText('<html><body><h1>Hello</h1>' + '<p>异常网页<a href="http://www.cnblogs.com">cnblogs</a>...</p>' + '</body></html>', 'html', 'utf-8')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论