虽然Python通过smtplib 库使发送电子邮件变得相对容易,但Scrapy提供了自己的发送电子邮件的工具,它非常易于使用,并且使用Twisted非阻塞IO实现,以避免干扰非阻塞IO爬虫。它还提供了一个用于发送附件的简单API,并且通过一些设置可以非常轻松地进行配置 。

快速示例

有两种方法可以实例化邮件发件人。您可以使用标准构造函数实例化它:

from scrapy.mail import MailSender
mailer = MailSender()

或者您可以通过Scrapy设置对象实例化它,这将遵循以下设置

mailer = MailSender.from_settings(settings)

以下是如何使用它发送电子邮件(没有附件):

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

MailSender类参考

MailSender是用于从Scrapy发送电子邮件的首选类,因为它使用Twisted非阻塞IO,就像框架的其余部分一样。

classscrapy.mail.MailSender(smtphost=Nonemailfrom=Nonesmtpuser=Nonesmtppass=Nonesmtpport=None)
参数:
  • smtphost(str or bytes – 用于发送电子邮件的SMTP主机。如果省略,MAIL_HOST将使用该 设置。
  • mailfrom(str – 用于发送电子邮件的地址(在From:标题中)。如果省略,MAIL_FROM将使用该设置。
  • smtpuser – SMTP用户。如果省略,MAIL_USER 将使用该设置。如果未给出,则不会执行SMTP身份验证
  • smtppass(str or bytes) – 用于身份验证的SMTP传递。
  • smtpport(int) – 要连接的SMTP端口
  • smtptls(bool) – 使用SMTP STARTTLS强制执行
  • smtpssl(bool) – 使用安全的SSL连接强制执行
classmethodfrom_settings(settings)
使用Scrapy设置对象进行实例化,该对象将遵循 这些Scrapy设置

参数: 设置scrapy.settings.Settings object) – 电子邮件收件人
send(tosubjectbodycc=Noneattachs=()mimetype=‘text/plain’charset=None)
发送电子邮件给给定的收件人。

参数:
  • to(str or list – 电子邮件收件人
  • subject(str – 电子邮件的主题
  • cc(str or list) – CC的电子邮件
  • body (str – 电子邮件正文
  • attachs (collections.abc.Iterable) – 一个可迭代的元组(attach_name、mimetype、file_object),其中 attach_name 是一个字符串,其名称将出现在电子邮件的附件中,mimetype 是附件的 mimetype,file_object 是一个包含附件内容的可读文件对象.
  • mimetype(str) – 电子邮件的MIME类型
  • charset(str – 用于电子邮件内容的字符编码

邮件设置

这些设置定义了MailSender 类的默认构造函数值,可用于在项目中配置电子邮件通知,而无需编写任何代码(对于那些扩展和使用的代码MailSender)。

MAIL_FROM

默认: 'scrapy@localhost'

发件人使用电子邮件(From:标题)发送电子邮件。

MAIL_HOST

默认: 'localhost'

用于发送电子邮件的SMTP主机。

MAIL_PORT

默认: 25

用于发送电子邮件的SMTP端口。

MAIL_USER

默认: None

用于SMTP身份验证的用户。如果禁用,则不会执行SMTP身份验证。

MAIL_PASS

默认: None

用于SMTP身份验证的密码,以及MAIL_USER

MAIL_TLS

默认: False

强制使用STARTTLS。STARTTLS是一种采用现有不安全连接的方法,并使用SSL / TLS将其升级为安全连接。

MAIL_SSL

默认: False

使用SSL加密连接强制连接