Python 用scrapy来发送邮件

1.在emailsender.py 文件中

# 目的
# 封装邮件发送的逻辑 不管哪一个项目或者文件需要发送
# 只需要引入这个文件 并且实现其方法 就能发送邮件
import smtplib
import email
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart


class SendEmail(object):
    def __init__(self):
        self.email_host = 'smtp.qq.com'
        self.email_port = '465'
        self.email_sender = '发送者邮箱'
        self.email_receiver = '接收者邮箱'
        self.email_password = '授权码'

        #发送纯文本邮件
        # body 为字符串
    def send_text_email(self,body,receiver,subject):
        # 1.内容主体
        # 2.内容类型
        # 3.编码方式
        message_text = MIMEText(body,'plain','utf-8')
        message_text['From'] = self.email_sender
        message_text['To'] = receiver
        message_text['Subject'] = subject

        try:
            email_client = smtplib.SMTP_SSL(self.email_host,self.email_port)
            login_result = email_client.login(self.email_sender,self.email_password)
            print('开始登录',login_result)
            # 如果有登录信息 而且登录信息里面第一条状态码为235说明登陆成功
            if login_result and login_result[0] ==235:
                print('登录成功')
                email_client.sendmail(self.email_sender,receiver,message_text.as_string())
                print('发送完成')
            else:
                print('登录失败')
        except Exception as e :
            print('邮件发送失败',e)

2.然后进入爬虫文件中

import scrapy
import datetime

from ..emailsender import  SendEmail

class YxSpider(scrapy.Spider):
    name = 'yx'
    allowed_domains = ['baidu.com']
    start_urls = ['http://www.baidu.com/']

    def start_requests(self):
        email = SendEmail()

        body = '爬虫开始:{}'.format(datetime.datetime.now())

        subject = '重要通知,明天放假'

        receiver = '接收者邮箱'

        email.send_text_email(body,receiver,subject)

        yield scrapy.Request(url='https://www.baidu.com')

3.在终端执行scrapy框架即可发送邮件

猜你喜欢

转载自blog.csdn.net/weixin_42660771/article/details/81569848
今日推荐