You are here:  Home » Python » 爬虫蜘蛛发送电子邮件scrapy.mail使用Twisted非阻塞IO实现(40)python Scrapy教程1.51以上版本

虽然Python通过smtplib 库使发送电子邮件变得相对容易,但Scrapy提供了自己的发送电子邮件的工具,它非常易于使用,并且使用Twisted非阻塞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非阻塞IO,就像框架的其余部分一样。

classscrapy.mail.MailSendersmtphost = Nonemailfrom = Nonesmtpuser = Nonesmtppass = Nonesmtpport = None 
参数:
  • smtphoststr bytes) – 用于发送电子邮件的SMTP主机。如果省略,MAIL_HOST将使用该 设置。
  • mailfromstr) – 用于发送电子邮件的地址(在From:标题中)。如果省略,MAIL_FROM将使用该设置。
  • smtpuser – SMTP用户。如果省略,MAIL_USER 将使用该设置。如果未给出,则不会执行SMTP身份验证
  • smtppassstr bytes) – 用于身份验证的SMTP传递。
  • smtpportint) – 要连接的SMTP端口
  • smtptlsboolean) – 使用SMTP STARTTLS强制执行
  • smtpsslboolean) – 使用安全的SSL连接强制执行
classmethodfrom_settings设置
使用Scrapy设置对象进行实例化,该对象将遵循 这些Scrapy设置

参数: 设置scrapy.settings.Settings对象) – 电子邮件收件人
sendtosubjectbodycc = Noneattachs =()mimetype =’text / plain’charset = None 
发送电子邮件给给定的收件人。

参数:
  • tostr str of list) – 电子邮件收件人
  • subjectstr) – 电子邮件的主题
  • ccstr str的列表) – CC的电子邮件
  • bodystr) – 电子邮件正文
  • attachsiterable) – 一个可迭代的元组,其中 是一个字符串,其名称将出现在电子邮件的附件中,是附件的mimetype,是一个可读的文件对象,带有附件的内容(attach_name, mimetype, file_object)attach_namemimetypefile_object
  • mimetypestr) – 电子邮件的MIME类型
  • charsetstr) – 用于电子邮件内容的字符编码

 

邮件设置

这些设置定义了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加密连接强制连接