Функция mail_managers
Функция mail_managers из модуля django.core.mail предназначена для отправки письма всем менеджерам,
указанным в параметре настроек MANAGERS. Это удобный способ оповещения административной группы
о важных событиях, ошибках или изменениях в системе. Функция принимает обязательные параметры
темы и тела письма, а также позволяет задать дополнительные настройки, такие как адрес отправителя
или соединение с почтовым сервером.
Если список менеджеров пуст, письмо не будет отправлено. Также стоит учитывать, что для корректной
работы функции в настройках проекта должны быть указаны параметры почтового сервера
(EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD).
Синтаксис
from django.core.mail import mail_managers
mail_managers(subject, message, from_email=None, connection=None, fail_silently=False)
Параметры
Функция mail_managers принимает следующие аргументы:
- ⁅b⁆subject⁅/b⁆ - строка, тема письма (обязательный параметр).
- ⁅b⁆message⁅/b⁆ - строка, тело письма (обязательный параметр).
-
⁅b⁆from_email⁅/b⁆ - строка или
None, адрес отправителя. Если не указан, используется значение из настроекDEFAULT_FROM_EMAIL. -
⁅b⁆connection⁅/b⁆ - экземпляр
EmailConnectionдля использования определённого соединения. Если не указан, используется соединение по умолчанию. -
⁅b⁆fail_silently⁅/b⁆ - булево значение. Если
True, ошибки SMTP игнорируются. По умолчаниюFalse.
Возвращает количество успешно отправленных сообщений (целое число).
Пример . Использование
Отправим простое уведомление менеджерам о том, что на сайте была опубликована новая статья:
from django.core.mail import mail_managers
subject = "New article published"
message = "A new article has been posted on the website. Check it out."
sent_count = mail_managers(subject, message)
print(sent_count)
Результат выполнения кода:
"1"
В данном случае письмо было отправлено одному менеджеру, поэтому возвращено значение 1.
Пример . С указанием отправителя
Если необходимо отправить письмо с конкретного адреса, его можно указать в параметре from_email:
from django.core.mail import mail_managers
subject = "System alert"
message = "Server usage exceeded 90%."
from_email = "admin@example.com"
mail_managers(subject, message, from_email=from_email)
Пример . С обработкой ошибок
Для подавления исключений при проблемах с отправкой можно использовать параметр fail_silently:
from django.core.mail import mail_managers
try:
mail_managers(
"Critical error",
"Database connection lost.",
fail_silently=False
)
except Exception as e:
print(f"Email sending failed: {e}")
Результат выполнения кода:
"Email sending failed: [Errno 111] Connection refused"
Здесь ошибка была перехвачена и обработана, так как мы установили fail_silently=False.
Смотрите также
-
функция
send_mail,
которая отправляет одно письмо произвольным получателям -
функция
send_mass_mail,
которая отправляет несколько писем за одно соединение -
функция
mail_admins,
которая отправляет письмо администраторам сайта -
класс
EmailMessage,
который предоставляет гибкий API для создания и отправки писем