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 (
str或bytes) – 用于发送电子邮件的 SMTP 主机。如果省略,将使用MAIL_HOST设置。 - mailfrom (
str) – 用于发送电子邮件的地址(在From:标头中)。如果省略,将使用MAIL_FROM设置。 - smtpuser – SMTP 用户。如果省略,将使用
MAIL_USER设置。如果未给定,将不执行 SMTP 身份验证。 - smtppass (
str或bytes) – 用于身份验证的 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 (
str或list) – 电子邮件收件人,作为字符串或字符串列表 - subject (
str) – 电子邮件主题 - cc (
str或list) – 抄送电子邮件,作为字符串或字符串列表 - 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
默认值:None
与 MAIL_USER 一起用于 SMTP 身份验证的密码。
MAIL_TLS
默认值:False
强制使用 STARTTLS。STARTTLS 是一种将现有不安全连接升级为使用 SSL/TLS 的安全连接的方法。
MAIL_SSL
默认值:False
强制使用 SSL 加密连接