Функция send_mass_mail
Функция send_mass_mail позволяет отправить несколько писем
за один вызов, используя одно соединение с почтовым сервером.
Это значительно эффективнее, чем вызывать send_mail
в цикле, так как соединение открывается один раз для всех
писем. Функция принимает кортеж или список кортежей,
каждый из которых содержит данные для одного письма:
тему, текст, отправителя и список получателей.
Синтаксис
send_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 позволяет
передать собственное соединение.
Пример . Отправка нескольких писем
Давайте отправим два письма разным получателям с одинаковым текстом, но разными темами:
from 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)
Результат выполнения кода:
"Successfully sent 2 messages"
Пример . С разными отправителями
Отправим письма от разных отправителей разным получателям:
from 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)
Результат выполнения кода:
"Successfully sent 2 messages"
Пример . С использованием соединения
Передадим собственное соединение для управления подключением вручную, например, для использования одного соединения при отправке большого количества писем:
from 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()
Результат выполнения кода:
"Successfully sent 3 messages"
Смотрите также
-
функция
send_mail,
которая отправляет одно письмо -
функция
send_mass_mail,
которая отправляет несколько писем через одно соединение -
функция
get_connection,
которая создает соединение с почтовым сервером -
класс
EmailMessage,
который используется для создания сложных писем