使用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/

image.png

我也收到了邮件。

image.png
广告
将在 10 秒后关闭
bannerAds