Lzh on GitHub

Sending e-mail (发送电子邮件)

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

Quick example (快速示例)

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

from scrapy.mail import MailSender
mailer = MailSender()

或者您可以传递一个 scrapy.Crawler 实例来实例化它,这将尊重设置

mailer = MailSender.from_crawler(crawler)

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

mailer.send(
    to=["someone@example.com"],
    subject="Some subject",
    body="Some body",
    cc=["another@example.com"],
)

MailSender class reference (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 连接

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 是附件的 mimetype,file_object 是一个可读的文件对象,包含附件的内容
  • mimetype (str) – 电子邮件的 MIME 类型
  • charset (str) – 电子邮件内容的字符编码

Mail settings (邮件设置)

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

MAIL_FROM

默认值:'scrapy@localhost' 用于发送电子邮件的发件人电子邮件地址(From: 标头)。

MAIL_HOST

默认值:'localhost' 用于发送电子邮件的 SMTP 主机。

MAIL_PORT

默认值:25 用于发送电子邮件的 SMTP 端口。

MAIL_USER

默认值:None 用于 SMTP 身份验证的用户。如果禁用,将不执行 SMTP 身份验证。

MAIL_PASS

默认值:NoneMAIL_USER 一起用于 SMTP 身份验证的密码。

MAIL_TLS

默认值:False 强制使用 STARTTLS。STARTTLS 是一种将现有不安全连接升级为使用 SSL/TLS 的安全连接的方法。

MAIL_SSL

默认值:False 强制使用 SSL 加密连接