如何在 Django 中使用邮件模板发送电子邮件

2023-04-11 00:00:00 模板 邮件 发送电子邮件

在 Django 中,我们可以使用内置的 EmailMessage 类构建邮件实例,并使用 Django 模板系统的邮件模板来编写邮件内容。下面是详细的步骤:

  1. 首先,需要在 settings.py 文件中配置邮件发送的相关信息,包括 SMTP 服务器地址、端口号、认证方式、用户名和密码等。比如:
# SMTP 邮件发送配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 465
EMAIL_USE_SSL = True
EMAIL_HOST_USER = 'your_qq_email_address'
EMAIL_HOST_PASSWORD = 'your_qq_email_password'
  1. 接下来,需要编写邮件模板,这里以发送一封简单的欢迎邮件为例,模板内容如下(保存为 welcome_email.txt):
Hello {{ name }},

Welcome to pidancode.com! Thank you for joining our community.

Best regards,
The pidancode team
  1. 在 views.py 文件中,可以定义一个发送邮件的函数,函数中使用 EmailMessage 类实例化一个邮件对象,并使用 render_to_string 函数渲染邮件模板。代码如下:
from django.core.mail import EmailMessage
from django.template.loader import render_to_string

def send_welcome_email(user_email):
    # 渲染邮件模板
    email_content = render_to_string('welcome_email.txt', {'name': '皮蛋编程'})

    # 实例化邮件对象
    email = EmailMessage(
        'Welcome to pidancode.com',  # 邮件主题
        email_content,  # 邮件内容
        'pidancode.com <noreply@pidancode.com>',  # 发件人名称和地址
        [user_email],  # 收件人列表
        [],  # 抄送人列表
        reply_to=['info@pidancode.com'],  # 回复邮件地址
    )

    # 发送邮件
    email.send()

在上面的例子中,我们使用 render_to_string 函数渲染了邮件模板,并将模板变量 name 设置为 “皮蛋编程”。然后,我们实例化了一个 EmailMessage 对象,设置了邮件主题、邮件内容、发件人和收件人等信息。最后,调用 send() 方法发送邮件即可。

需要注意的是,邮件模板文件要保存在应用程序的 templates 目录中,而非静态文件目录。

另外,如果需要发送 HTML 邮件,可以将邮件模板的后缀名改为 .html,并在 EmailMessage 初始化函数的第二个参数中指定 content_subtype='html'。

希望以上内容对您有所帮助!

相关文章