译者:OSGeo 中国
虽然python使通过 smtplib Slapy类库提供了自己的发送电子邮件的工具,非常容易使用,并且使用 Twisted non-blocking IO ,以避免干扰爬虫的非阻塞IO。它还提供了一个简单的用于发送附件的API,并且非常容易配置,其中有一些 settings .
快速实例
有两种方法可以实例化邮件发送者。您可以使用标准构造函数来实例化它:
from scrapy.mail import MailSender
mailer = MailSender()
或者您可以通过一个Scrapy设置对象来实例化它,该对象将尊重 settings ::
mailer = MailSender.from_settings(settings)
下面是如何使用它发送电子邮件(不带附件)::
mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])
MailSender 类引用
MailSender 是从scrappy发送电子邮件的首选类,因为它使用 Twisted non-blocking IO 和框架的其他部分一样。
class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)
| 参数: |
- smtphost (str or bytes) — 用于发送电子邮件的SMTP主机。如果省略,
MAIL_HOST
将使用设置。 - mailfrom (str) — 用于发送电子邮件的地址(在
From:
标题)。如果省略,MAIL_FROM
将使用设置。 - smtpuser — SMTP用户。如果省略,
MAIL_USER
将使用设置。如果未提供,则不会执行任何SMTP身份验证。 - smtppass (str or bytes) — 用于身份验证的SMTP通行证。
- smtpport (int) — 要连接到的SMTP端口
- smtptls (boolean) — 使用smtp starttls强制
- smtpssl (boolean) — 强制使用安全的SSL连接 | | | —- |
classmethod from_settings(settings)
使用Scrapy设置对象实例化,该对象将 these Scrapy settings .
参数: | 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加密连接强制连接