使用Python + Django进行邮件发送
我将用Python + Django发送电子邮件。
1. 环境
windows10 home 64bit
Python 3.6.5
Django 2.0.4
2. 应用程序开发
(venv) C:\data\python\myproject>python manage.py startapp sendmail
成品的结构
myproject\sendmail
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ urls.py ・・・・・・(1)
│ views.py ・・・・・・(2)
│ __init__.py
※迁移和__pycache__被省略
3. 应用程序的编辑
(1)创建sendmail\urls.py
from django.urls import path
from . import views
app_name = 'sendmail'
urlpatterns = [
path('', views.index, name='index'),
]
只需要一种选择,以下是用中文对其进行了改写:在startapp中,不会自动生成urls.py文件,请自行创建。
(2) 编辑 sendmail\views.py 文件
from django.shortcuts import render
from django.core.mail import BadHeaderError, send_mail
from django.http import HttpResponse, HttpResponseRedirect
def index(request):
"""題名"""
subject = "題名"
"""本文"""
message = "本文です\nこんにちは。メールを送信しました"
"""送信元メールアドレス"""
from_email = "information@myproject"
"""宛先メールアドレス"""
recipient_list = [
"apptest@apptest.com"
]
send_mail(subject, message, from_email, recipient_list)
return HttpResponse('<h1>email send complete.</h1>')
重点在于“send_mail”的部分。
4. 项目设置
我的项目\settings.py
为了发送电子邮件,请按以下方式编辑settings.py文件。
我已经在settings.py的末尾添加了EMAIL_BACKEND。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sendmail', #追加
]
・・・・
# mail
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'apptest'
EMAIL_HOST_PASSWORD = 'xxxxxxxx'
EMAIL_USE_TLS = False
如果不向SMTP服务器发送邮件,在开发环境中,可以按以下方式将其输出到控制台。
# for email debug settings
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
(2) 我的项目\urls.py
就像下面这样。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('sendmail/', include('sendmail.urls')), #"追加"
path('admin/', admin.site.urls),
]
5. 确认行动
(1) 我们要启动服务器。
(venv) C:\data\python\myproject>managed.py runserver
(2) 访问 http://localhost:8000/sendmail/
我也收到了邮件。