zoukankan      html  css  js  c++  java
  • Email提醒

    说明:当爬虫在运行过程中遇到异常或则服务器遇到问题,可以通过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()
  • 相关阅读:
    面向对象串讲
    昨日回顾
    socketserver模块
    今日总结
    在centos6.5-64bit上安装wxHexEditor,以查看编译二进制文件
    spring security 关于 http.sessionManagement().maximumSessions(1);的探究
    spring boot + spring security +前后端分离【跨域】配置 + ajax的json传输数据
    window10 查看端口列表
    spring boot 解决 跨域 的两种方法 -- 前后端分离
    spring security 动态 修改当前登录用户的 权限
  • 原文地址:https://www.cnblogs.com/nuochengze/p/13121803.html
Copyright © 2011-2022 走看看