Функция send_mass_mail

Функция send_mass_mail позволяет отправить несколько писем за один вызов, используя одно соединение с почтовым сервером. Это значительно эффективнее, чем вызывать send_mail в цикле, так как соединение открывается один раз для всех писем. Функция принимает кортеж или список кортежей, каждый из которых содержит данные для одного письма: тему, текст, отправителя и список получателей.

Синтаксис

pythonsend_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None)

Параметр datatuple является обязательным и представляет собой кортеж кортежей, где каждый внутренний кортеж содержит четыре элемента: subject, message, from_email и recipient_list. Параметр fail_silently определяет, будут ли подавляться исключения при отправке. Параметры auth_user и auth_password используются для аутентификации на SMTP-сервере, а connection позволяет передать собственное соединение.

Пример . Отправка нескольких писем

Давайте отправим два письма разным получателям с одинаковым текстом, но разными темами:

pythonfrom django.core.mail import send_mass_mail

message1 = ("Subject 1", "Message text 1", "from@example.com", ["user1@example.com"])
message2 = ("Subject 2", "Message text 2", "from@example.com", ["user2@example.com"])

res = send_mass_mail((message1, message2), fail_silently=False)
print(res)

Результат выполнения кода:

python"Successfully sent 2 messages"

Пример . С разными отправителями

Отправим письма от разных отправителей разным получателям:

pythonfrom django.core.mail import send_mass_mail

message1 = ("Welcome", "Welcome to our service", "admin1@example.com", ["user1@example.com"])
message2 = ("Newsletter", "Weekly newsletter", "admin2@example.com", ["user2@example.com", "user3@example.com"])

res = send_mass_mail((message1, message2), fail_silently=False)
print(res)

Результат выполнения кода:

python"Successfully sent 2 messages"

Пример . С использованием соединения

Передадим собственное соединение для управления подключением вручную, например, для использования одного соединения при отправке большого количества писем:

pythonfrom django.core.mail import send_mass_mail, get_connection

connection = get_connection()
connection.open()

message1 = ("Subject A", "Message A", "from@example.com", ["user1@example.com"])
message2 = ("Subject B", "Message B", "from@example.com", ["user2@example.com"])
message3 = ("Subject C", "Message C", "from@example.com", ["user3@example.com"])

res = send_mass_mail((message1, message2, message3), connection=connection)
print(res)

connection.close()

Результат выполнения кода:

python"Successfully sent 3 messages"

Смотрите также

  • функция send_mail,
    которая отправляет одно письмо
  • функция send_mass_mail,
    которая отправляет несколько писем через одно соединение
  • функция get_connection,
    которая создает соединение с почтовым сервером
  • класс EmailMessage,
    который используется для создания сложных писем