РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
666 of 818 menu

Класс EmailMultiAlternatives

Класс EmailMultiAlternatives наследуется от класса EmailMessage и предназначен для отправки писем, которые имеют несколько альтернативных представлений одного содержимого. Чаще всего используется для отправки HTML-писем с текстовой версией в качестве альтернативы. При создании экземпляра класса указываются тема письма, основное тело, список получателей и другие параметры, а для добавления альтернативной версии используется метод attach_alternative.

Синтаксис

from django.core.mail import EmailMultiAlternatives email = EmailMultiAlternatives( subject='subject', body='plain text body', from_email='sender@example.com', to=['recipient@example.com'], bcc=None, connection=None, attachments=None, headers=None, cc=None, reply_to=None )

Аргументы конструктора класса EmailMultiAlternatives:

  • subject - тема письма (строка)
  • body - основной текст письма (строка)
  • from_email - адрес отправителя (строка)
  • to - список получателей (список строк)
  • bcc - скрытые получатели (список строк)
  • connection - соединение с почтовым сервером
  • attachments - вложения (список кортежей)
  • headers - дополнительные заголовки (словарь)
  • cc - копии получателей (список строк)
  • reply_to - адрес для ответа (список строк)

Пример . Отправка HTML-письма

Рассмотрим базовый пример отправки письма с текстовой и HTML-версией:

from django.core.mail import EmailMultiAlternatives subject = 'Welcome to our service' text_body = 'Welcome! Please visit our website.' html_body = '<h1>Welcome!</h1><p>Please visit our <a href="https://example.com">website</a>.</p>' email = EmailMultiAlternatives( subject=subject, body=text_body, from_email='noreply@example.com', to=['user@example.com'] ) email.attach_alternative(html_body, 'text/html') res = email.send() print(res)

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

"1"

Метод send возвращает количество успешно отправленных сообщений.

Пример . С вложениями и заголовками

Письмо может содержать вложения и дополнительные заголовки:

from django.core.mail import EmailMultiAlternatives subject = 'Report for Q1 2026' text_body = 'Please find the report attached.' html_body = '<h1>Report Q1 2026</h1><p>Please find the report attached.</p>' email = EmailMultiAlternatives( subject=subject, body=text_body, from_email='reports@example.com', to=['manager@example.com'], headers={'X-Priority': '1'}, attachments=[('report.txt', 'This is report content.', 'text/plain')] ) email.attach_alternative(html_body, 'text/html') res = email.send() print(res)

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

"1"

Пример . С несколькими получателями

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

from django.core.mail import EmailMultiAlternatives subject = 'Important update' text_body = 'Please read the update.' html_body = '<h1>Update</h1><p>Please read the update.</p>' email = EmailMultiAlternatives( subject=subject, body=text_body, from_email='updates@example.com', to=['user1@example.com', 'user2@example.com'], cc=['admin@example.com'] ) email.attach_alternative(html_body, 'text/html') res = email.send() print(res)

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

"1"

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

Часто класс используется внутри представлений для отправки уведомлений:

from django.core.mail import EmailMultiAlternatives from django.http import HttpResponse from django.template.loader import render_to_string def send_notification(request): subject = 'Notification' context = {'user': 'John', 'message': 'Your order is ready.'} text_body = render_to_string('email/notification.txt', context) html_body = render_to_string('email/notification.html', context) email = EmailMultiAlternatives( subject=subject, body=text_body, from_email='noreply@example.com', to=['john@example.com'] ) email.attach_alternative(html_body, 'text/html') email.send() return HttpResponse('Email sent successfully')

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

"Email sent successfully"

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

  • класс EmailMessage,
    базовый класс для создания писем
  • метод attach_alternative,
    добавляет альтернативную версию письма
  • метод send,
    отправляет созданное письмо
  • функция send_mail,
    быстрая отправка простых писем
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить