发送电子邮件

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

快速示例

有两种方法可以实例化邮件发送器。您可以使用标准的 __init__ 方法实例化它

from scrapy.mail import MailSender

mailer = MailSender()

或者您可以通过传递一个 scrapy.Crawler 实例来实例化它,它将遵循 设置

mailer = MailSender.from_crawler(crawler)

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

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

MailSender 类参考

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

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)[source]
参数:
  • smtphost (strbytes) – 用于发送电子邮件的 SMTP 主机。如果省略,将使用 MAIL_HOST 设置。

  • mailfrom (str) – 用于发送电子邮件的地址(在 From: 标头中)。如果省略,将使用 MAIL_FROM 设置。

  • smtpuser – SMTP 用户。如果省略,将使用 MAIL_USER 设置。如果未给出,则不会执行 SMTP 身份验证。

  • smtppass (strbytes) – 用于身份验证的 SMTP 密码。

  • smtpport (int) – 要连接到的 SMTP 端口

  • smtptls (bool) – 强制使用 SMTP STARTTLS

  • smtpssl (bool) – 强制使用安全的 SSL 连接

classmethod from_crawler(crawler)[source]

使用 scrapy.Crawler 实例进行实例化,它将遵循 这些 Scrapy 设置

参数:

crawler – 爬虫

send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)[source]

将电子邮件发送给指定的收件人。

参数:
  • to (strlist) – 电子邮件收件人,可以是字符串或字符串列表

  • subject (str) – 电子邮件主题

  • cc (strlist) – 要抄送的电子邮件,可以是字符串或字符串列表

  • body (str) – 电子邮件正文

  • attachs (collections.abc.Iterable) – 元组的迭代器 (attach_name, mimetype, file_object),其中 attach_name 是一个字符串,表示电子邮件附件中显示的名称,mimetype 是附件的 MIME 类型,file_object 是一个可读的文件对象,包含附件的内容

  • mimetype (str) – 电子邮件的 MIME 类型

  • charset (str) – 用于电子邮件内容的字符编码

邮件设置

这些设置定义了 MailSender 类的默认 __init__ 方法值,并且可用于在项目中配置电子邮件通知,而无需编写任何代码(对于那些使用 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 加密连接。