Отправка электронной почты¶
Хотя Python делает отправку электронной почты относительно простой через библиотеку smtplib
, Scrapy предоставляет собственное средство для отправки электронной почты, которое очень легко использовать и реализовано с использованием Twisted неблокирующего IO, чтобы избежать вмешательства в неблокирующий ввод-вывод краулера. Он также предоставляет простой API для отправки вложений, и его очень легко настроить с помощью нескольких настроек.
Быстрый пример¶
Есть два способа создать экземпляр отправителя почты. Вы можете создать его экземпляр стандартным методом __init__
:
from scrapy.mail import MailSender
mailer = MailSender()
Или вы можете создать его экземпляр, передав объект настроек Scrapy, который будет учитывать настройки:
mailer = MailSender.from_settings(settings)
А вот как с его помощью отправить электронное письмо (без вложений):
mailer.send(to=["someone@example.com"], subject="Some subject", body="Some body", cc=["another@example.com"])
Справочник по классу MailSender¶
MailSender — предпочтительный класс для отправки электронных писем от Scrapy, поскольку он использует Twisted неблокирующего IO, как и остальная часть фреймворка.
- class scrapy.mail.MailSender(smtphost=None, mailfrom=None, smtpuser=None, smtppass=None, smtpport=None)¶
- Параметры
smtphost (str or bytes) – SMTP-хост, который будет использоваться для отправки электронных писем. Если не указано, будет использоваться настройка
MAIL_HOST
.mailfrom (str) – адрес, используемый для отправки писем (в заголовке
From:
). Если пропущен, будет использоваться настройкаMAIL_FROM
.smtpuser – пользователь SMTP. Если не указано, будет использоваться настройка
MAIL_USER
. Если не указан, SMTP-аутентификация выполняться не будет.smtppass (str or bytes) – проход SMTP для аутентификации.
smtpport (int) – порт SMTP для подключения
smtptls (bool) – принудительно использовать SMTP STARTTLS
smtpssl (bool) – принудительно использовать безопасное соединение SSL
- classmethod from_settings(settings)¶
Создать экземпляр с использованием объекта настроек Scrapy, который будет учитывать эти настройки Scrapy.
- Параметры
settings (
scrapy.settings.Settings
object) – получатели электронной почты
- send(to, subject, body, cc=None, attachs=(), mimetype='text/plain', charset=None)¶
Отправить электронное письмо указанным получателям.
- Параметры
to (str or list) – получатели электронной почты в виде строки или списка строк
subject (str) – тема электронного письма
cc (str or list) – электронные письма в CC в виде строки или списка строк
body (str) – тело сообщения электронной почты
attachs (collections.abc.Iterable) – итерация кортежей
(attach_name, mimetype, file_object)
, гдеattach_name
— это строка с именем, которое будет отображаться во вложении электронного письма,mimetype
— это mimetype вложения, аfile_object
— читаемый объект файла с содержимым вложенияmimetype (str) – MIME-тип сообщения электронной почты
charset (str) – кодировка символов, используемая для содержимого электронного письма
Настройки почты¶
Данные параметры определяют значения метода __init__
по умолчанию для класса MailSender
и могут использоваться для настройки уведомлений по электронной почте в вашем проекте без написания кода (для тех расширений и кода, которые используют 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
.
MAIL_TLS¶
По умолчанию: False
Принудительно использовать STARTTLS. STARTTLS — это способ использовать существующее небезопасное соединение и обновить его до безопасного соединения с использованием SSL/TLS.
MAIL_SSL¶
По умолчанию: False
Принудительное соединение с использованием зашифрованного SSL соединения