爬虫:Scrapy13 - 发送 email
虽然 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的更多相关文章
- java发送email
package com.assess.util; import java.io.File; import java.util.ArrayList; import java.util.List; imp ...
- Spring 发送 Email
本文转自:http://zl198751.iteye.com/blog/757617 看到了本文,收获颇丰,感谢之至! 首先介绍下Email的发送流程: 需要选中smtp邮件服务器,Yahoo不提供免 ...
- 使用PHP发送email进行账号激活或者密码修改操作
使用PHPMailer编写发送邮件 PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协 ...
- 使用python原生的方法实现发送email
使用python原生的方法实现发送email import smtplib from email.mime.text import MIMEText from email.mime.multipart ...
- C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)
下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...
- 【WinForm】C# 发送Email
发送Email 的条件 1.SmtpClient SMTP 协议 即 Host 处理事务的主机或IP地址 //smtp.163.com UseDefaultCredentia ...
- [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)
下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...
- asp.net发送E-mail
发送电子邮件也是项目开发当中经常用到的功能,这里我整理了一个发送电子邮件(带附件,支持多用户发送,主送.抄送)的类库,供大家参考. 先上两个实体类,用于封装成Mail对象. /// <summa ...
- 使用spring 并加载模板发送Email 发邮件 java 模板
以下例子是使用spring发送email,然后加载到固定的模板,挺好的,大家可以试试 需要使用到spring-context 包 和 com.springsource.org.apache.veloc ...
随机推荐
- 第一个C#程序Hello World
一.编写第一个C#程序——Hello World1. 启动Microsoft Visual Studio 2010.2. 点击“文件”菜单,选择“新建”项,在弹出的子菜单中选择“项目”命令.3. 弹出 ...
- js、jquery中全局替换replace
str.replace(/需要替换的/g,"新字符串") //此处使用正则表达式
- C#+Winform开发窗体程序
学习笔记 第一章:winform基础 一.概述 1.Windows Form(简称WinForm) 是微软.NET平台下用于开发"图形界面"应用程序的组件. 2.C/S架构 客户机 ...
- 连接MYSQL 错误代码2003
问题是服务里面mysql没有启动或者mysql服务丢失 解决办法: 开始->运行->cmd,进到mysql安装的bin目录(以我的为例,我的安装在D盘)D:\MySQL\bin>my ...
- Xtrabackup实现MySQL备份
一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...
- 微信小程序开发入门学习(1):石头剪刀布小游戏
从今天起开始捣鼓小程序了2018-12-17 10:02:15 跟着教程做了第一个入门实例有兴趣的朋友可以看看: 猜拳游戏布局 程序达到的效果 猜拳游戏的布局是纵向显示了三个组件:文本组件(tex ...
- 使用Docker 一键部署 LNMP+Redis 环境
使用Docker 部署 LNMP+Redis 环境 Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linu ...
- 【转载】最长回文字符串(manacher算法)
原文转载自:http://blog.csdn.net/lsjseu/article/details/9990539 偶然看见了人家的博客发现这么一个问题,研究了一下午, 才发现其中的奥妙.Stupid ...
- 存在チェックのみする場合はcount(*)でOK
SELECT SINGLE COUNT(*) FROM T001 WHERE BUKRS = P_BUKRS. IF SY-SUBRC <> 0. ENDIF.
- ISCSI网络存储
ISCSI(iSCSI,Internet Small Computer System Interface) iSCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户可以通过互联网方便 ...