【问题标题】:How to send emails using Jinja2 as a Scrapy extension如何使用 Jinja2 作为 Scrapy 扩展发送电子邮件
【发布时间】:2017-01-02 09:48:14
【问题描述】:

您是否知道或有一个示例,说明如何使用 Jinja2Premailer 作为 Scrapy 扩展来创建和发送电子邮件?

如果我不应该将它们与 Scrapy 一起使用,您推荐其他哪些 HTML 模板解决方案来发送高级电子邮件?

【问题讨论】:

  • 你能解释一下他们为什么要使用scrapy吗?

标签: web-scraping scrapy jinja2 scrapy-spider premailer


【解决方案1】:

您绝对可以使用Scrapyjinja2 发送电子邮件。我们一直这样做是为了从我们的抓取工具中得到警报。我们使用mandrill 发送我们的电子邮件,但您可以使用任何其他 SMTP 提供商发送您的电子邮件。您也可以扩展此代码以在模板中实现premailer

import requests
from scrapy import signals
from jinja2 import Environment, PackageLoader

class EmailExt(object):
    """
    Email extension for scrapy
    """

    @classmethod
    def from_crawler(cls, crawler):
        """
        On `spider_closed` signal call `self.spider_closed()`
        """
        ext = cls()
        crawler.signals.connect(ext.spider_closed,
                                signal=signals.spider_closed)
        return ext

    def spider_closed(self, spider, reason):

        #initialize `PackageLoader` with the directory to look for HTML templates
        env = Environment(loader=PackageLoader('templates', 'emails'))

        template = env.get_template("email-template.html")

        # render template with the custom variables in your jinja2 template
        html = template.render(title="Email from scraper", count=10)

        # send the email using the mandrill API
        requests.post('https://api.mailgun.net/v3/yourcompany/messages',
                      auth=('api', 'API-KEY-FOR-MANDRILL'),
                      data={'from': 'support@gmail.com',
                            'to': 'myemail@gmail.com',
                            'subject': 'Email from scraper',
                            'html': html})

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 2011-01-05
    • 2011-09-07
    • 2012-08-18
    • 2013-02-21
    • 2016-07-15
    • 2020-02-26
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多