Функция send_mail
Функция send_mail предоставляет простой и удобный способ отправки электронных писем в Django. Она принимает основные параметры письма: тему, текст, отправителя и список получателей. Функция возвращает количество успешно доставленных сообщений, что позволяет отслеживать результат отправки.
Синтаксис
send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)
Параметры функции
Функция принимает следующие параметры:
-
subject- тема письма (строка) -
message- текст письма (строка) -
from_email- email отправителя (строка) -
recipient_list- список получателей (список строк) -
fail_silently- подавлять ли исключения (булево значение, по умолчанию False) -
auth_user- имя пользователя для аутентификации (опционально) -
auth_password- пароль для аутентификации (опционально) -
connection- соединение с почтовым сервером (опционально) -
html_message- HTML-версия письма (опционально)
Пример . 1: Базовая отправка письма
Отправим простое текстовое письмо одному получателю:
from 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)
Результат выполнения кода:
"1"
Пример . 2: Отправка письма нескольким получателям
Отправим письмо списку получателей:
from 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)
Результат выполнения кода:
"3"
Пример . 3: Отправка письма с HTML-содержимым
Отправим письмо с альтернативной HTML-версией:
from 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)
Результат выполнения кода:
"1"
Пример . 4: Отправка письма с пользовательскими данными
Отправим письмо с именем пользователя в теле:
from 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)
Результат выполнения кода:
"1"
Пример . 5: Отправка писем с использованием соединения
Отправим несколько писем через одно соединение:
from 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)
Результат выполнения кода:
"1 1"
Смотрите также
-
функция
send_mass_mail,
которая отправляет массовые письма с оптимизацией -
функция
mail_admins,
которая отправляет письмо администраторам сайта -
функция
mail_managers,
которая отправляет письмо менеджерам сайта -
класс
EmailMessage,
который предоставляет расширенные возможности для работы с почтой