发送email

虽然Python通过 smtplib库使得发送email变得很简单,Scrapy仍然提供了自己的实现, 该功能十分易用,同时由于采用了Twisted非阻塞式IO ,其避免了对爬虫的非阻塞式IO的影响。 通过一些 settings 设置,您可以很简单的进行配置。

简单例子

有两种方法可以创建邮件发送器(mail sender)。 您可以通过标准构造器(constructor)创建:

from scrapy.mail import MailSender
mailer = MailSender()

或者您可以传递一个Scrapy设置对象,其会参考 settings:

mailer = MailSender.from_settings(settings)

这是如何来发送邮件了(不包括附件):

mailer.send(to=["[email protected]"], subject="Some subject", body="Some body", cc=["[email protected]"])

如上面的示例中所示,tocc需要电子邮件地址的列表,不是单一的地址,即使只有一个收件人,即to="[email protected]"将无法工作。

MailSender类参考

在Scrapy中发送email推荐使用MailSender。其同框架中其他的部分一样,使用了Twisted非阻塞式IO

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)
Parameters:
  • smtphost (str) – 发送email的SMTP主机(host)。 如果忽略,则使用 MAIL_HOST
  • mailfrom (str) – 用于发送email的地址(address)(填入 From:) 。 如果忽略,则使用 MAIL_FROM
  • smtpuser – SMTP用户。 如果忽略,则使用 MAIL_USER 如果未给定,则将不会进行SMTP认证(authentication)。
  • smtppass (str) – SMTP认证的密码
  • smtpport (int) – SMTP连接的短裤
  • smtptls (boolean) – 强制使用SMTP STARTTLS
  • smtpssl (boolean) – 强制使用SSL连接
classmethod from_settings(settings)

其会参考 这些Scrapy设置.

Parameters:settings (scrapy.settings.Settings object) – the e-mail recipients
send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)

发送email到给定的接收者。

Parameters:
  • to (list) – the e-mail recipients
  • subject (str) – email内容
  • cc (list) – the e-mails to CC
  • body (str) – email的内容
  • attachs (iterable) – 一个由元组(attach_name, mimetype, file_object)组成的可迭代对象,其中attach_name是出现在电子邮件附件中的名字字符串,mimetype是附件的MIME类型,file_object是一个包含附件内容的可读文件对象。
  • mimetype (str) – email的mime类型
  • charset (str) – the character encoding to use for the e-mail contents

Mail设置

这些设置定义MailSender构造函数的默认值,而且可以用来配置你的项目中的邮件通知功能,而不需要(为那些使用MailSender的扩展和代码)编写任何代码。

MAIL_FROM

默认值: 'scrapy@localhost'

用于发送email的地址(address)(填入 From:) 。

MAIL_HOST

默认值: 'localhost'

发送email的SMTP主机(host)。

MAIL_PORT

默认值: 25

发用邮件的SMTP端口。

MAIL_USER

默认值: None

SMTP用户。 如果未给定,则将不会进行SMTP认证(authentication)。

MAIL_PASS

默认值: None

用于SMTP认证,与 MAIL_USER 配套的密码。

MAIL_TLS

默认值: False

强制使用STARTTLS。 STARTTLS能使得在已经存在的不安全连接上,通过使用SSL/TLS来实现安全连接。

MAIL_SSL

默认值: False

强制使用SSL加密连接。