# 发送电子邮件
> 译者:[OSGeo 中国](https://www.osgeo.cn/)
虽然python使通过 [smtplib](https://docs.python.org/2/library/smtplib.html) Slapy类库提供了自己的发送电子邮件的工具,非常容易使用,并且使用 [Twisted non-blocking IO](https://twistedmatrix.com/documents/current/core/howto/defer-intro.html) ,以避免干扰爬虫的非阻塞IO。它还提供了一个简单的用于发送附件的API,并且非常容易配置,其中有一些 [settings](#topics-email-settings) .
## 快速实例
有两种方法可以实例化邮件发送者。您可以使用标准构造函数来实例化它:
```py
from scrapy.mail import MailSender
mailer = MailSender()
```
或者您可以通过一个Scrapy设置对象来实例化它,该对象将尊重 [settings](#topics-email-settings) ::
```py
mailer = MailSender.from_settings(settings)
```
下面是如何使用它发送电子邮件(不带附件)::
```py
mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])
```
## MailSender 类引用
MailSender 是从scrappy发送电子邮件的首选类,因为它使用 [Twisted non-blocking IO](https://twistedmatrix.com/documents/current/core/howto/defer-intro.html) 和框架的其他部分一样。
```py
class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)
```
| 参数: |
* **smtphost** (_str_ _or_ _bytes_) -- 用于发送电子邮件的SMTP主机。如果省略, [`MAIL_HOST`](#std:setting-MAIL_HOST) 将使用设置。
* **mailfrom** (_str_) -- 用于发送电子邮件的地址(在 `From:` 标题)。如果省略, [`MAIL_FROM`](#std:setting-MAIL_FROM) 将使用设置。
* **smtpuser** -- SMTP用户。如果省略, [`MAIL_USER`](#std:setting-MAIL_USER) 将使用设置。如果未提供,则不会执行任何SMTP身份验证。
* **smtppass** (_str_ _or_ _bytes_) -- 用于身份验证的SMTP通行证。
* **smtpport** (_int_) -- 要连接到的SMTP端口
* **smtptls** (_boolean_) -- 使用smtp starttls强制
* **smtpssl** (_boolean_) -- 强制使用安全的SSL连接
|
| --- | --- |
```py
classmethod from_settings(settings)
```
使用Scrapy设置对象实例化,该对象将 [these Scrapy settings](#topics-email-settings) .
| 参数: | **settings** ([`scrapy.settings.Settings`](api.html#scrapy.settings.Settings "scrapy.settings.Settings") object) -- 电子邮件收件人 |
| --- | --- |
```py
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`](#scrapy.mail.MailSender "scrapy.mail.MailSender") 类,并且可以用于在不编写任何代码的情况下在项目中配置电子邮件通知(对于使用 [`MailSender`](#scrapy.mail.MailSender "scrapy.mail.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`](#std:setting-MAIL_USER) .
### MAIL_TLS
违约: `False`
使用starttls强制。starttls是一种获取现有不安全连接并使用ssl/tls将其升级为安全连接的方法。
### MAIL_SSL
违约: `False`
使用SSL加密连接强制连接
- 简介
- 第一步
- Scrapy at a glance
- 安装指南
- Scrapy 教程
- 实例
- 基本概念
- 命令行工具
- Spider
- 选择器
- 项目
- 项目加载器
- Scrapy shell
- 项目管道
- Feed 导出
- 请求和响应
- 链接提取器
- 设置
- 例外情况
- 内置服务
- Logging
- 统计数据集合
- 发送电子邮件
- 远程登录控制台
- Web服务
- 解决具体问题
- 常见问题
- 调试spiders
- Spider 合约
- 常用做法
- 通用爬虫
- 使用浏览器的开发人员工具进行抓取
- 调试内存泄漏
- 下载和处理文件和图像
- 部署 Spider
- AutoThrottle 扩展
- Benchmarking
- 作业:暂停和恢复爬行
- 延伸 Scrapy
- 体系结构概述
- 下载器中间件
- Spider 中间件
- 扩展
- 核心API
- 信号
- 条目导出器
- 其余所有
- 发行说明
- 为 Scrapy 贡献
- 版本控制和API稳定性