Метод send

Метод send применяется к экземпляру класса EmailMessage и отправляет электронное письмо с использованием настроенного почтового бекенда. Метод возвращает количество успешно доставленных сообщений (обычно 1 при успешной отправке). При отправке можно передать дополнительные параметры, такие как почтовое соединение или список получателей, которые переопределят установленные в объекте письма.

Синтаксис

pythonEmailMessage.send(fail_silently=False, connection=None)

Параметры

Метод send принимает два необязательных параметра:

⁅b⁆fail_silently⁅/b⁆ - логический флаг, определяющий, будут ли подавляться исключения при отправке. По умолчанию равен False, то есть исключения будут выбрасываться.

⁅b⁆connection⁅/b⁆ - экземпляр почтового соединения, который будет использоваться для отправки. Если не указан, используется стандартное соединение по умолчанию.

Пример

Давайте создадим простое письмо и отправим его одному получателю:

pythonfrom django.core.mail import EmailMessage

email = EmailMessage(
  subject='Hello from Django',
  body='This is a test email sent from Django.',
  from_email='sender@example.com',
  to=['recipient@example.com']
)
res = email.send()
print(res)

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

python"1"

Пример

Отправим письмо с подавлением исключений при возникновении ошибки:

pythonfrom django.core.mail import EmailMessage

email = EmailMessage(
  subject='Test with fail_silently',
  body='This email will not raise an exception on failure.',
  from_email='sender@example.com',
  to=['invalid-recipient@example.com']
)
res = email.send(fail_silently=True)
print(res)

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

python"0"

Пример

Отправим письмо с использованием пользовательского почтового соединения:

pythonfrom django.core.mail import EmailMessage, get_connection

connection = get_connection(
  host='smtp.custom.com',
  port=587,
  username='user@custom.com',
  password='secure_password',
  use_tls=True
)
email = EmailMessage(
  subject='Custom SMTP Test',
  body='This email uses a custom SMTP connection.',
  from_email='user@custom.com',
  to=['test@example.com']
)
res = email.send(connection=connection)
print(res)

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

python"1"

Пример

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

pythonfrom django.core.mail import EmailMessage

email = EmailMessage(
  subject='Important Document',
  body='Please find attached the document.',
  from_email='sender@example.com',
  to=['recipient1@example.com', 'recipient2@example.com'],
  bcc=['bcc@example.com']
)
email.attach('document.pdf', b'PDF content here', 'application/pdf')
email.attach_file('image.png')
res = email.send()
print(res)

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

python"1"

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

  • функция send_mail,
    которая отправляет простое письмо без создания объекта класса
  • функция send_mass_mail,
    которая отправляет несколько писем за одно соединение
  • функция mail_admins,
    которая отправляет письмо администраторам сайта
  • функция mail_managers,
    которая отправляет письмо менеджерам сайта