Отправка электронной почты

Хотя 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 соединения