发送电子邮件
尽管 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=["someone@example.com"],
subject="Some subject",
body="Some body",
cc=["another@example.com"],
)
MailSender 类参考
MailSender 组件 是从 Scrapy 发送电子邮件的首选类,因为它像框架的其他部分一样使用 Twisted 非阻塞 IO。
- class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)[source]
- 参数:
- send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)[source]
向指定的收件人发送电子邮件。
- 参数:
subject (str) – 电子邮件的主题。
body (str) – 电子邮件正文。
attachs (collections.abc.Iterable) – 一个包含元组
(attach_name, mimetype, file_object)
的可迭代对象,其中attach_name
是一个字符串,表示电子邮件附件中显示的名称,mimetype
是附件的 mimetype,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 加密连接进行连接。