💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 发送电子邮件 > 译者:[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加密连接强制连接