Django应用程序通过使用内置的Python库和第三方库可以轻松地发送电子邮件。本攻略将详细讲解Django应用程序中如何使用邮件功能。
安装依赖库
在使用邮件功能之前,需要安装两个包:django
和django-environ
。
可以使用以下命令安装它们:
pip install django
pip install django-environ
在settings.py中配置发送邮件的设置
在settings.py
文件中,定义一个可用于发送电子邮件的SMTP服务提供商以及其他相关设置。
可以使用以下设置:
import os
import environ
env = environ.Env()
environ.Env.read_env()
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = env('EMAIL_HOST')
EMAIL_HOST_USER = env('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD = env('EMAIL_HOST_PASSWORD')
EMAIL_PORT = env('EMAIL_PORT')
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'Your <your@mail.com>'
ADMINS = (
('Admin', 'admin@mail.com'),
)
其中:
-
将
EMAIL_BACKEND
设置为Django使用的邮件后端。SMTP邮件后端(SMTPEmailBackend)允许您使用SMTP服务器发送邮件。这是最常见的选项之一,因为它允许使用几乎所有SMTP服务器发送电子邮件。 -
EMAIL_HOST
:SMTP服务提供商的 SMTP 服务器地址。 -
EMAIL_HOST_USER
:SMTP服务提供商提供的SMTP登录用户名。 -
EMAIL_HOST_PASSWORD
:SMTP服务提供商提供的SMTP登录密码。 -
EMAIL_PORT
:SMTP服务提供商的SMTP端口号。 -
EMAIL_USE_TLS
:如果使用TLS加密,将其设置为 True。 -
DEFAULT_FROM_EMAIL
:如果您有默认的发件人电子邮件地址,则需要设置(可以使用用户友好的名称)。 -
ADMINS
:将管理员设置为可接收电子邮件的地址。
注意:使用django-environ
库从环境变量中获取值是一种最佳实践方法,因为这会使您的密码等机密信息不会以明文的形式出现在代码中。
在视图函数中发送邮件
在Django应用程序中,您可以使用 send_mail
函数来发送电子邮件。这个函数需要 3 个参数:
- 主题
- 消息
- 发送方电子邮件地址
示例代码如下:
from django.core.mail import send_mail
def hello(request):
subject = 'Subject'
message = 'Hello!'
from_email = 'from@example.com'
recipient_list = ['to1@example.com', 'to2@example.com']
send_mail(subject, message, from_email, recipient_list)
return HttpResponse('Email sent')
在示例中,在hello
视图函数中发送电子邮件。发送方电子邮件地址是from@example.com,接收方用列表传入给recipient_list。
在模板中发送邮件
Django将消息传递体系结合到模板系统中,因此您可以将消息包含在模板中,而无需在视图函数中硬编码它。
首先在模板中定义消息内容:
{% block content %}
<h1>Hello</h1>
<p>This is an email.</p>
{% endblock %}
然后,在视图函数中调用render_to_string
,将模板渲染结果作为消息内容发送邮件。
示例代码如下:
from django.template.loader import render_to_string
from django.core.mail import EmailMultiAlternatives
def hello(request):
subject = 'Subject'
from_email = 'from@example.com'
recipient_list = ['to1@example.com']
html_content = render_to_string('email_template.html')
message = EmailMultiAlternatives(subject, html_content, from_email, recipient_list)
message.content_subtype = 'html'
message.send()
return HttpResponse('Email sent')
在示例中,使用render_to_string
函数从模板文件提取 HTML 内容。使用EmailMultiAlternatives
创建了多部分电子邮件对象,可以设置主题、内容和发件人。最后使用.send()
方法发送电子邮件。
结论
通过这篇攻略,您可以轻松地为Django应用程序添加电子邮件功能。可以在视图函数中或模板中插入您的消息内容,并使用send_mail或EmailMultiAlternatives函数将邮件发送给各种收件人。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django应用程序中如何发送电子邮件详解 - Python技术站