# 發送電子郵件
> 譯者:[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穩定性