Функция send_mail

Функция send_mail предоставляет простой и удобный способ отправки электронных писем в Django. Она принимает основные параметры письма: тему, текст, отправителя и список получателей. Функция возвращает количество успешно доставленных сообщений, что позволяет отслеживать результат отправки.

Синтаксис

pythonsend_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)

Параметры функции

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

Пример . 1: Базовая отправка письма

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

pythonfrom django.core.mail import send_mail

res = send_mail(
  'Welcome to our site',
  'Thank you for registration!',
  'noreply@mysite.com',
  ['user@example.com'],
  fail_silently=False,
)
print(res)

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

python"1"

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

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

pythonfrom django.core.mail import send_mail

recipients = ['user1@example.com', 'user2@example.com', 'user3@example.com']
res = send_mail(
  'Newsletter',
  'Check out our new features!',
  'news@mysite.com',
  recipients,
  fail_silently=True,
)
print(res)

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

python"3"

Пример . 3: Отправка письма с HTML-содержимым

Отправим письмо с альтернативной HTML-версией:

pythonfrom django.core.mail import send_mail

res = send_mail(
  'Special offer',
  'Visit our site for discounts!',
  'offers@mysite.com',
  ['customer@example.com'],
  html_message='<h1>Special offer!</h1><p>Get 50% off today!</p>',
  fail_silently=False,
)
print(res)

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

python"1"

Пример . 4: Отправка письма с пользовательскими данными

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

pythonfrom django.core.mail import send_mail
from django.contrib.auth.models import User

user = User.objects.get(username='john_doe')
res = send_mail(
  f'Hello {user.username}',
  f'Welcome back, {user.first_name}!',
  'welcome@mysite.com',
  [user.email],
  fail_silently=False,
)
print(res)

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

python"1"

Пример . 5: Отправка писем с использованием соединения

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

pythonfrom django.core.mail import send_mail, get_connection

connection = get_connection()
res1 = send_mail(
  'Message 1',
  'First message body',
  'noreply@mysite.com',
  ['user1@example.com'],
  connection=connection,
)
res2 = send_mail(
  'Message 2',
  'Second message body',
  'noreply@mysite.com',
  ['user2@example.com'],
  connection=connection,
)
connection.close()
print(res1, res2)

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

python"1 1"

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

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