虽然 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. Servlet的工作原理和生命周期

    Servlet的工作原理 . Web服务器加载Servlet:Web服务器启动后,它会根据每个工程的web.xml文件去查找该工程的Servlet,并且找到这些Servlet的Class文件所在的地址 ...

  2. DCMTK读取DICOM文件头信息的三种方法

    Howto: Load File Meta-Header Here's an example that shows how to load the File Meta Information Head ...

  3. poj_2689_Prime Distance

    The branch of mathematics called number theory is about properties of numbers. One of the areas that ...

  4. Java - 得到项目中properties属性文件中定义的属性值

    public static String getPropertiesValue(String fileName, String key) {   return ResourceBundle.getBu ...

  5. C#基础-面向对象-多态

    多态,不同对象对同一方法的不同实现 使用abstract关键字表示抽象类 // 表示是一个抽象类 public abstract class Animal { private string name; ...

  6. Shell学习——变量

    1.在Bash中,每一个变量的值都是字符串 2.查看某个进程的环境变量 cat /proc/$PID/environ | tr '\0' '\n' 3.变量赋值 3.1.var=value,注意var ...

  7. JS常用数组方法及实例

    1.join(separator):将数组的元素组起一个字符串,以separator为分隔符 ,,,,]; var b = a.join("|"); //如果不用分隔符,默认逗号隔 ...

  8. 访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“

    在使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to t ...

  9. 1016-06-首页20-封装工具条-有控件在viewDidLoad的时候距离顶部是0--到了viewWillAppear或viewDidAppear系统就加了64

  10. Jongmah CodeForces - 1110D

    传送门 题意:你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 题解:三个一模一样的 ...