您知道或有一个如何使用Jinja2和Premailer作为Scrapy扩展创建和发送电子邮件的示例吗?
如果我不应该将它们与 Scrapy 一起使用,您建议发送高级电子邮件的其他 HTML 模板解决方案是什么?
您绝对可以发送电子邮件 Scrapy
和 jinja2
.我们一直在这样做,以便从我们的刮刀中得到警报。我们使用 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})