使用scrapy的mail模块发送邮件

来源:互联网 发布:礼品 知乎 编辑:程序博客网 时间:2024/06/11 23:04

相应官网链接:链接

由官网提供的方法可以发现有两种形式可以发送邮件,

其一:配置settings,使用

mailer = MailSender.from_settings(settings)
的方法读取settings的配置,不过本人这样写好以后一直出现这种错误

TypeError: 'module' object has no attribute '__getitem__'

没有找到解决方法,所以尝试了另一种

其二:官网链接

直接在MailSender中配置需要的字段。

本人使用的是163邮箱发送邮件,请注意:授权码的获取以及邮箱的相应配置如下:



授权码获取成功以后一定要妥善保存,原因你懂得!!



下面代码为爬虫关闭的时候,执行发送邮件的功能!(代码亲测已过)

# -*- coding: utf-8 -*-import scrapyimport loggingclass MaiziSpiderSpider(scrapy.Spider):    name = "maizi_spider"    allowed_domains = ["maiziedu.com"]    start_urls = (        'http://www.maiziedu.com/wiki/crawler/logging/',    )    logger = logging.getLogger(__name__)    def parse(self, response):        self.logger.info('Parse function called on %s', response.url)        print response.url    def closed(self, reason):# 爬取结束的时候发送邮件        from scrapy.mail import MailSender        # mailer = MailSender.from_settings(settings)# 出错了,没找到原因        mailer = MailSender(            smtphost = "smtp.163.com",  # 发送邮件的服务器            mailfrom = "***********@163.com",   # 邮件发送者            smtpuser = "***********@163.com",   # 用户名            smtppass = "***********",  # 发送邮箱的密码不是你注册时的密码,而是授权码!!!切记!            smtpport = 25   # 端口号        )        body = u"""        发送的邮件内容        """        subject = u'发送的邮件标题'        # 如果说发送的内容太过简单的话,很可能会被当做垃圾邮件给禁止发送。        mailer.send(to=["****@qq.com", "****@qq.com"], subject = subject.encode("utf-8"), body = body.encode("utf-8"))


发送的过程中可能会被识别为垃圾邮件,为了防止这种情况的发生,修改发送邮件的主题和发送邮件的内容即可。

0 0
原创粉丝点击