Функция mail_managers

Функция mail_managers из модуля django.core.mail предназначена для отправки письма всем менеджерам, указанным в параметре настроек MANAGERS. Это удобный способ оповещения административной группы о важных событиях, ошибках или изменениях в системе. Функция принимает обязательные параметры темы и тела письма, а также позволяет задать дополнительные настройки, такие как адрес отправителя или соединение с почтовым сервером.

Если список менеджеров пуст, письмо не будет отправлено. Также стоит учитывать, что для корректной работы функции в настройках проекта должны быть указаны параметры почтового сервера (EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD).

Синтаксис

pythonfrom django.core.mail import mail_managers

mail_managers(subject, message, from_email=None, connection=None, fail_silently=False)

Параметры

Функция mail_managers принимает следующие аргументы:

Возвращает количество успешно отправленных сообщений (целое число).

Пример . Использование

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

pythonfrom 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)

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

python"1"

В данном случае письмо было отправлено одному менеджеру, поэтому возвращено значение 1.

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

Если необходимо отправить письмо с конкретного адреса, его можно указать в параметре from_email:

pythonfrom 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:

pythonfrom 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}")

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

python"Email sending failed: [Errno 111] Connection refused"

Здесь ошибка была перехвачена и обработана, так как мы установили fail_silently=False.

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

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