Метод attach_alternative

Метод attach_alternative применяется к экземпляру класса EmailMultiAlternatives и позволяет прикрепить к письму альтернативную версию содержимого в формате HTML. Этот метод полезен для отправки писем, которые могут отображаться как в текстовом, так и в HTML-формате, в зависимости от возможностей почтового клиента получателя. Метод принимает два обязательных аргумента: содержание альтернативной версии и MIME-тип содержимого.

Синтаксис

pythonemail.attach_alternative(content, mimetype)

Где:

Пример

Давайте отправим письмо с текстовой и HTML-версией:

pythonfrom django.core.mail import EmailMultiAlternatives

subject = "Hello from Django"
body = "This is plain text version."
from_email = "noreply@example.com"
to = ["user@example.com"]

email = EmailMultiAlternatives(subject, body, from_email, to)
html_content = "<p>This is <strong>HTML</strong> version.</p>"
email.attach_alternative(html_content, "text/html")
res = email.send()
print(res)

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

python1

Возвращаемое значение 1 означает, что письмо успешно отправлено одному получателю.

Пример

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

pythonfrom django.core.mail import EmailMultiAlternatives

subject = "Welcome to our site"
body = "Welcome! Please visit our website."
from_email = "admin@example.com"
to = ["new_user@example.com"]

email = EmailMultiAlternatives(subject, body, from_email, to)
html_content = """
  <h1>Welcome!</h1>
  <p>Please visit our <a href="https://example.com">website</a>.</p>
  <img src="https://example.com/logo.png" alt="Logo">
"""
email.attach_alternative(html_content, "text/html")
res = email.send()
print(res)

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

python1

Письмо будет доставлено с HTML-содержимым, которое почтовый клиент отобразит как веб-страницу.

Пример

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

pythonfrom django.core.mail import EmailMultiAlternatives

subject = "Important notification"
body = "Plain text notification."
from_email = "system@example.com"
to = ["user@example.com"]

email = EmailMultiAlternatives(subject, body, from_email, to)
html_content = "<p><strong>Important</strong> notification.</p>"
email.attach_alternative(html_content, "text/html")

plain_alternative = "Alternative plain text."
email.attach_alternative(plain_alternative, "text/plain")
res = email.send()
print(res)

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

python1

Почтовый клиент выберет наиболее подходящую версию для отображения.

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

  • класс EmailMultiAlternatives,
    который используется для отправки писем с альтернативными версиями
  • метод attach,
    который добавляет вложения к письму
  • функция send_mail,
    которая упрощает отправку простых писем
  • класс EmailMessage,
    который является базовым классом для работы с электронной почтой