Django 邮件
最后修改于 2023 年 1 月 9 日
Django 发送邮件教程演示了如何在 Django 中发送邮件。在本教程中,我们使用 Mailtrap 服务。
Django
Django 是一个高级 Python Web 框架。它鼓励快速开发和清晰、实用的设计。Django 的主要目标是简化复杂、数据库驱动的网站的创建。
Django 由 Django Software Foundation 维护。
Django 发送邮件示例
在下面的示例中,我们创建一个 Django 应用程序,该应用程序将邮件发送到 Mailtrap 帐户。如果我们还没有帐户,需要注册一个。注册过程非常简单快捷。每月免费发送 500 封邮件。
$ mkdir sendmail $ cd sendmail $ mkdir src
我们创建一个项目目录并创建一个 src 子目录。
$ cd src $ django-admin start-project sendmail .
我们创建一个新的 Django 项目。
$ mkdir sendmail/templates
我们创建 templates 目录,并将我们的模板文件放在其中。
$ tree /f
src
│ manage.py
│
└───sendmail
│ settings.py
│ urls.py
│ views.py
│ wsgi.py
│ __init__.py
│
└───templates
home.html
这是项目目录的内容。
注意: Django 的方式是将功能放入应用程序中,而应用程序是使用 django-admin startapp 创建的。在本教程中,我们不使用应用程序,以使示例更简单。我们专注于演示如何发送邮件。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'sendmail/templates')],
...
]
...
# Email settings
EMAIL_HOST = 'smtp.mailtrap.io'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = '2525'
在 setting.py 文件中,我们配置了 templates 目录。在文件末尾,我们提供了电子邮件配置设置。这些可以在 Mailtrap 的 SMTP 设置和集成下拉菜单中找到。
from django.contrib import admin
from django.urls import path
from .views import home, sendmail
urlpatterns = [
path('admin/', admin.site.urls),
path('', home, name='home'),
path('sendmail', sendmail, name='sendmail'),
]
我们定义了路由。一个路由显示主页,另一个路由调用我们的自定义 sendmail 函数。
from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail
def home(request):
return render(request, 'home.html')
def sendmail(request):
send_mail(
'Subject',
'Email message',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
return HttpResponse('Mail successfully sent')
我们在 src/sendmail 中创建了 views.py 文件。有两个视图函数。
def home(request):
return render(request, 'home.html')
home 函数渲染主页,其中包含一个用于发送邮件的锚点。
def sendmail(request):
send_mail(
'Subject',
'Email message',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
return HttpResponse('Mail successfully sent')
Django 的 send_mail 函数用于发送邮件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home page</title>
</head>
<body>
<a href="{% url 'sendmail' %}">Send test mail</a>
</body>
</html>
主页包含一个发送请求以发送邮件的锚点。
$ python manage.py runserver
我们运行服务器并导航到 http://127.0.0.1:8000/。现在我们点击链接。
在本文中,我们演示了如何使用 Django Web 框架发送电子邮件。