首页 > 其他 > 详细

Email提醒

时间:2020-06-13 21:57:49      阅读:44      评论:0      收藏:0      [点我收藏+]

说明:当爬虫在运行过程中遇到异常或则服务器遇到问题,可以通过Email及时向目标邮件发送报告

from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr,formataddr
import smtplib


class SendEmailFromSpider():
    """默认使用smtp服务"""
    def __init__(self,from_addr,to_addr,password):
        self.from_addr = from_addr  # 发送邮件的地址
        self.to_addr = to_addr  # 接受邮件的地址
        self.password = password
        self.smtp_server = smtp.qq.com    # smtp_server为smtp服务器地址
    
    def format_addr_(self,s):
        name,addr = parseaddr(s)    # 将传入的s,如"一号爬虫<{}>"解析为name=‘一号安排爬虫‘,addr={}
        return formataddr(pair=(Header(s=name,charset=utf-8).encode(),addr),charset=utf-8)
    
    def make_message(self,from_addr,to_addr):
        """
        构造MIMEText对象时需要3个参数:
        _text:表示邮件的正文
        _subtype:表示传入文本的类型,常有的有plain和html
        _charset:编码
        """
        msg = MIMEText(_text="hello world",_subtype=plain,_charset=utf-8)
        # msg[‘From‘] = Header(s="一号爬虫",charset=‘utf-8‘).encode()   # 这样写会使用代发
        # msg[‘To‘] = Header(s=‘管理员‘,charset=‘utf-8‘).encode()
        msg[From] = self.format_addr_(一号爬虫<{}>.format(from_addr))
        msg[To] = self.format_addr_(管理员<{}>.format(to_addr))
        msg[Subject] = Header(s=一号爬虫的运行状态,charset=utf-8).encode()
        
        return msg
        

    def send_message(self,message):
        server = smtplib.SMTP(host=self.smtp_server,port=25)    # 连接到smtp服务器
        server.login(user=self.from_addr,password=self.password)    # 登录
        server.sendmail(from_addr=self.from_addr,to_addrs=self.to_addr,msg=message.as_string())
        server.quit()
    
    def run(self):
        message = self.make_message(from_addr=self.from_addr,to_addr=self.to_addr)
        self.send_message(message=message)


if __name__=="__main__":
    from_addr = "xxxxxx@qq.com"  
    password = "xxxxxxx"   # 密码为对第三方客户端的授权码
    to_addr = "xxxxx@gmail.com"
    obj = SendEmailFromSpider(from_addr=from_addr,to_addr=to_addr,password=password)
    obj.run()

 

Email提醒

原文:https://www.cnblogs.com/nuochengze/p/13121803.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!