📜  django 使用 html 模板发送电子邮件 - Html (1)

📅  最后修改于: 2023-12-03 15:14:43.867000             🧑  作者: Mango

Django 使用 HTML 模板发送电子邮件

本文将介绍如何在 Django 中使用 HTML 模板发送电子邮件。我们将使用 Django 的内置邮件功能来发送邮件,并使用 HTML 模板来定义邮件的内容和样式。

准备工作

在开始之前,确保你已经安装了 Django,并在你的 Django 项目中配置好了邮件发送设置。

首先,你需要在 settings.py 文件中配置你的邮件发送设置。以下是一个示例设置:

# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.example.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your-email@example.com'
EMAIL_HOST_PASSWORD = 'your-email-password'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'your-email@example.com'

在这个示例中,我们使用了一个 SMTP 邮件后端,并提供了相应的邮件服务器的主机名、端口、用户名、密码和是否使用 TLS 连接。

创建 HTML 模板

创建一个包含邮件内容的 HTML 模板是发送 HTML 邮件的关键步骤。你可以在 Django 项目的 templates 目录下创建一个名为 email_template.html 的 HTML 模板文件。

<!-- email_template.html -->

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ subject }}</title>
</head>
<body>
    <h1>{{ subject }}</h1>
    <p>{{ message }}</p>
</body>
</html>

在这个示例中,我们定义了一个简单的 HTML 结构,包含一个标题和消息的段落。在模板中,我们使用了 Django 的模板语法来引用变量,这些变量将在发送邮件时被动态填充。

发送 HTML 格式的邮件

现在我们已经准备好了 HTML 模板,可以开始发送 HTML 邮件了。在你的 Django 项目中的任何一个视图函数中,可以使用以下代码来发送带有 HTML 内容的邮件:

# views.py

from django.core.mail import EmailMultiAlternatives
from django.template.loader import get_template
from django.utils.html import strip_tags

def send_html_email():
    subject = 'Hello Django'
    to_email = ['receiver@example.com']
    from_email = 'sender@example.com'

    # 渲染 HTML 模板
    html_template = get_template('email_template.html')
    html_content = html_template.render({'subject': subject, 'message': 'Welcome to Django!'})

    # 创建邮件对象
    email = EmailMultiAlternatives(subject, strip_tags(html_content), from_email, to_email)
    email.attach_alternative(html_content, "text/html")

    # 发送邮件
    email.send()

在这个示例中,我们首先从模板中获取 HTML 内容,并使用 EmailMultiAlternatives 类创建一个邮件对象。EmailMultiAlternatives 类提供了一个方法来定义邮件的纯文本版本,我们使用 strip_tags 函数来去除 HTML 标签,生成纯文本版本的邮件内容。然后,我们使用 attach_alternative 方法将 HTML 内容附加到邮件对象中,并指定邮件的内容类型为 HTML。

最后,我们调用 send() 方法来发送邮件。

结论

通过上述步骤,你可以在 Django 中使用 HTML 模板发送电子邮件。你可以为邮件内容创建更复杂的 HTML 模板,并在发送邮件时动态填充模板变量。

希望本文对你在 Django 中发送 HTML 邮件有所帮助!