Skip to main content

发送电子邮件

虽然Python通过 smtplib 库相对容易地发送电子邮件,但是Scrapy提供了自己的发送电子邮件的设施,这是非常容易使用的,并且使用 Twisted non-blocking IO 实现,以避免干扰爬虫的非阻塞IO。它还提供了一个简单的API来发送附件,它很容易配置,用几个 设置

快速示例

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

from scrapy.mail import MailSender
mailer = MailSender()

或者你可以实例化它传递Scrapy设置对象,这将尊重 设置:

mailer = MailSender.from_settings(settings)

这里是如何使用它发送电子邮件(无附件):

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

MailSender类引用

MailSender是用于从Scrapy发送电子邮件的首选类,因为它使用 Twisted non-blocking IO,与框架的其余部分一样。

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)
参数:
  • smtphost (str) – 用于发送电子邮件的SMTP主机。如果省略,将使用 MAIL_HOST 设置。
  • mailfrom (str) – 用于发送电子邮件的地址(在 From: 头中)。如果省略,将使用 MAIL_FROM 设置。
  • smtpuser – SMTP用户。如果省略,将使用 MAIL_USER 设置。如果未给出,则不执行SMTP验证。
  • smtppass (str) – SMTP验证通过。
  • smtpport (int) – 要连接的SMTP端口
  • smtptls (boolean) – 强制使用SMTP STARTTLS
  • smtpssl (boolean) – 强制使用安全的SSL连接
classmethod from_settings(settings)

实例化使用Scrapy设置对象,这将尊重 这些Scrapy设置

参数:settings (scrapy.settings.Settings object) – 电子邮件收件人
send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)

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

参数:
  • to (str or list of str) – 电子邮件收件人
  • subject (str) – 电子邮件的主题
  • cc (str or list of str) – 电子邮件到CC
  • body (str) – 电子邮件正文
  • attachs (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加密连接强制连接