虽然 Python 通过 smtplib 库使得发送 email 变得非常简单,Scrapy 仍然提供了自己的实现。该功能十分易用,同时由于采用了 Twisted 非阻塞式(non-blocking)IO,其避免了对爬虫的非阻塞式 IO 的影响。另外,其也提供了简单的 API 来发送附件。通过一些 settings 设置,可以很简单的进行配置。

简单例子

有两种方法可以创建邮件发送器(mail sender)。可以通过标准构造器(constructor)创建:

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 类参考手册

在 Scrapy 中发送 email 推荐使用 MailSender。其同框架中的其它部分一样,使用了 Twsited 非阻塞式(non-blocking)IO。

class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)

参数:

  • smtphost (str) – 发送 email 的 SMTP 主机(host)。如果忽略,则使用 MAIL_HOST 。
  • mailfrom (str) – 用于发送 email 的地址(address)(填入 From:) 。如果忽略,则使用 MAIL_FROM 。
  • smtpuser – SMTP 用户。如果忽略,则使用 MAIL_USER 。如果未给定,则将不会进行 SMTP 认证(authentication)。
  • smtppass (str) – SMTP 认证的密码
  • smtpport (int) – SMTP 连接的短裤
  • smtptls – 强制使用 STARTTLS
  • smtpssl (boolean) – 强制使用 SSL 连接
classmethod from_settings(settings)

使用 Scrapy 设置对象来初始化对象。

参数:

settings (scrapy.settings.Settings object) – the e-mail recipients

send(to, subject, body, cc=None, attachs=(), mimetype='text/plain')

发送 email 到给定的接收者。

参数:

  • to (list) – email 接收
  • subject (str) – email 内容
  • cc (list) – 抄送的人
  • body (str) – email 的内容
  • attachs (iterable) – 可迭代的元组 (attach_name, mimetype, file_object) attach_name 是一个在 email 的附件中显示的名字的字符串,mimetype 是附件的 mime 类型, file_object 是包含附件内容的可读的文件对象。
  • mimetype (str) – email 的 mime 类型

Mail 设置

这些设置定义了 MailSender 构造器的默认值。使得你在不编写任何一行代码的情况下,为你的项目配置实现 email 通知的功能。

MAIL_FROM

默认值: 'scrapy@localhost'

用于发送 email 的地址(address)(填入 From:) 。

MAIL_HOST

默认值:'localhost'

发送 email 的 SMTP 主机(host)。

MAIL_PORT

默认值:25

发用邮件的 SMTP 端口。

MAIL_USER

默认值:None

SMTP 用户。如果未给定,则将不会进行 SMTP 认证(authentication)。

MAIL_PASS

默认值:None

用于 SMTP 认证,与 MAIL_USER 配套的密码。

MAIL_TLS

默认值:False

强制使用 STARTTLS。STARTTLS 能使得在已经存在的不安全连接上,通过使用 SSL/TLS 来实现安全连接。

MAIL_SSL

默认值: False

强制使用 SSL 加密连接。

爬虫:Scrapy13 - 发送 email的更多相关文章

  1. java发送email

    package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; imp ...

  2. Spring 发送 Email

    本文转自:http://zl198751.iteye.com/blog/757617 看到了本文,收获颇丰,感谢之至! 首先介绍下Email的发送流程: 需要选中smtp邮件服务器,Yahoo不提供免 ...

  3. 使用PHP发送email进行账号激活或者密码修改操作

    使用PHPMailer编写发送邮件 PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协 ...

  4. 使用python原生的方法实现发送email

    使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...

  5. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

  6. 【WinForm】C# 发送Email

    发送Email  的条件 1.SmtpClient SMTP 协议    即 Host 处理事务的主机或IP地址     //smtp.163.com      UseDefaultCredentia ...

  7. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  8. asp.net发送E-mail

    发送电子邮件也是项目开发当中经常用到的功能,这里我整理了一个发送电子邮件(带附件,支持多用户发送,主送.抄送)的类库,供大家参考. 先上两个实体类,用于封装成Mail对象. /// <summa ...

  9. 使用spring 并加载模板发送Email 发邮件 java 模板

    以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...

随机推荐

  1. 旧文备份:VC中嵌入NASM编写的汇编函数

    在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名 ...

  2. ckplayer插件播放视频

    官网:超酷网页视频 本篇介绍:插件播放视频,  添加插件(额外的功能),  视频格式之间的转换 PC端一般都是利用插件(Flash)来播放视频,可以支持很多格式.网上很多说这个插件的,这里只是做个记录 ...

  3. 修改SecureCRT默认会话字符集

    修改SecureCRT默认会话字符集 1.找到SecureCRT配置文件 Default.ini 2.修改Default修改为UTF-8 将S:"Output Transformer Nam ...

  4. Python 创建项目、应用

    1.创建项目 django-admin startproject TestPython 2.创建应用 python3 manage.py startapp books 3.目录讲解 ├── TestP ...

  5. Python 初始—(字符编码解码)

    字符编码之间的编码转换则需要通过Unicode 进行转换,那么需要一个编码和解码实现与Unicode进行关联转换 例如utf-8转gbk utf-8----decode----->Unicode ...

  6. 爬虫学习(十六)——jsonpath

    jsonpath介绍 jsonpath是一种信息抽取类库,是从json文档中抽取指定信息的工具,提供多种语言实现的版本 jsonpath对json来说,就相当于xpath对于xml jsonpath和 ...

  7. dom技术解析xml下jaxp解析器详细代码

    1.使用jaxp实现查询操作 person.xml <?xml version="1.0" encoding="UTF-8" standalone=&qu ...

  8. ajax原生js及readystate/status

    菜鸟教程 ←← GET: <script> function  ajaxGet(){ var  xmlhttp; if(window.XMLHttpRequest){ //TE7+  Fi ...

  9. 4W条人才表循环处理业务sql优化过程

    场景: 使用windows服务定时更新合同数据:执行存储过程(pas_RefreshContractStatus),但存储过程里面有一个需要更新4W条人才表循环处理业务 问题: 循环更新4W条人才表状 ...

  10. Servlet异步处理和文件上传

    1. 什么是异步处理     原来,在服务器没有结束响应之前,浏览器是看不到响应内容的!只有响应结束时,浏览器才能显示结果!     现在异步处理的作用:在服务器开始响应后,浏览器就可以看到响应内容, ...