Метод attach_alternative
Метод attach_alternative применяется к экземпляру класса
EmailMultiAlternatives и позволяет прикрепить к письму
альтернативную версию содержимого в формате HTML.
Этот метод полезен для отправки писем, которые могут
отображаться как в текстовом, так и в HTML-формате,
в зависимости от возможностей почтового клиента получателя.
Метод принимает два обязательных аргумента: содержание
альтернативной версии и MIME-тип содержимого.
Синтаксис
email.attach_alternative(content, mimetype)
Где:
-
content- строка с содержимым альтернативной версии письма -
mimetype- MIME-тип содержимого (например,"text/html")
Пример
Давайте отправим письмо с текстовой и HTML-версией:
from 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)
Результат выполнения кода:
1
Возвращаемое значение 1 означает, что письмо успешно отправлено
одному получателю.
Пример
Отправим письмо с HTML-версией, которая содержит ссылку и изображение:
from 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)
Результат выполнения кода:
1
Письмо будет доставлено с HTML-содержимым, которое почтовый клиент отобразит как веб-страницу.
Пример
Отправим письмо с несколькими альтернативными версиями:
from 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)
Результат выполнения кода:
1
Почтовый клиент выберет наиболее подходящую версию для отображения.
Смотрите также
-
класс
EmailMultiAlternatives,
который используется для отправки писем с альтернативными версиями -
метод
attach,
который добавляет вложения к письму -
функция
send_mail,
которая упрощает отправку простых писем -
класс
EmailMessage,
который является базовым классом для работы с электронной почтой