Дерево страниц

resources/send_message_and_files/email_sender.py

Модуль используется для отправки Email сообщений. Умеет проверять валидность email аккаунтов, а также разделять вложения на несколько сообщений, согласно установленному ограничению максимального размера вложений. Основной рабочий класс EmailSender.

Аргументы класса

Атрибуты класса

  • max_attachments_bytes (int): Максимальный размер вложений в байтах, по умолчанию 25 * 1024 * 1024
  • default_subject (str): Стандартная тема письма. По умолчанию {server_name} -> {script_name}

Методы класса

  • email_is_valid(email) → bool - Возвращает True если указан правильный email.
    Аргументы метода:
    • email (str): Email, который необходимо проверить
  • parse_mails(emails) → List[str] - Парсит email адреса из строки или list/tuple при этом проверяя каждый методом email_is_valid
    Агрументы метода:
    • emails (str | List[str] | Tuple[str]): Строка, с разделенными запятой email адресами или tuple/list из email адресов.
  • send(mails, text="", attachments=None, subject=None) - Отправляет email сообщение.
    Аргументы метода:
    • mails (str, Tuple[str], List[str]): Список email адресов для отправки.
    • text (str, optional): Текст сообщения. По умолчанию пустая строка.
    • attachments (List[str], optional): Список полных путей до файлов, которые необходимо отправить в качестве вложений.
    • subject (str,optional): Тема письма, если не задана - используется default_subject.

При инициализации экземпляра класса - он ищет выбранный Email аккаунт среди существующих.
Если не находит вызовет ошибку EmailAccountNotFound

Пример кода
from email_sender import EmailSender

mail = EmailSender("FakeAccount")
# EmailAccountNotFound: FakeAccount

Примеры кода

Отправка email сообщения
from email_sender import EmailSender

mail = EmailSender("Unnamed Account")

mail.send("example@dssl.ru", text="Hello World!", subject="Test message")
Отправка вложений

При отправке вложений большинство email сервисов ограничивают размер вложений. Скрипт позволяет задать максимальное значение вложений (по умолчанию 25 MB). И при отправке нескольких файлов он автоматически разделит сообщения на несколько (с учетом того, что общий размер вложений будет меньше указанного)

from email_sender import EmailSender

mail = EmailSender("Unnamed Account")

# Set max attachments size = 10 MB
mail.max_attachments_bytes = 10 * 1024 * 1024

mail.send("example@dssl.ru", attachments=[r".../bigImage1.jpg", r".../bigImage2.jpg", r".../bigImage3.jpg"])