Django框架下发送邮件

创建项目如下所示:

来到settings.py文件中进行设置。

1.注册app

2.设置templates文件夹路径。

3.设置邮件发送的相关东西。

# 以下这些配置信息,django会自动读取,使用账号以及授权码进行登录
# 成功之后,就会发送邮件

# 设置邮件域名
EMAIL_HOST = 'smtp.qq.com'

# 设置端口号,端口号是数字
EMAIL_PORT = 25

# 设置发件人的邮箱账号
EMAIL_HOST_USER = '[email protected]'

# 设置发件人的授权码
EMAIL_HOST_PASSWORD = 'xxxxxxxx'

# 设置是否启用安全连接
EMAIL_USER_TLS = True

至此,就完成了所需要的所有设置。

下面就可以操作发送邮件了。

首先,需要将urls.py    views.py 和index.html文件连接起来。

views.py文件中,代码如下:

from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse('发送邮件')

urls.py文件中代码如下:

from django.contrib import admin
from django.urls import path
from myApp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',views.index)
]

python manage.py runserver 启动服务器,输入网址:http://127.0.0.1:8000/index/

界面显示结果:

表示我们连接成功。

下面在视图文件中写发送邮件的代码。

from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail
from django.conf import settings
# Create your views here.

def send_email(request):
    # 值1:邮件标题
    # 值2:邮件主题
    # 值3:发件人
    # 值4:收件人,必须是列表或者元组
    res = send_mail('关于中秋节放假的通知','接上级领导{}的通知,中秋节放假三天,调休六天,连接国庆节假期七天,一共放假十六天。'.format('XXX'),settings.EMAIL_HOST_USER,('[email protected]',))

    if res == 1:
        return HttpResponse('邮件发送成功!')
    else:
        return HttpResponse('邮件发送失败')

在urls.py文件中更改路由,代码如下:

from django.contrib import admin
from django.urls import path
from myApp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',views.send_email)
]

刷新页面就可以看到发送成功。

下面我们来尝试在index.html文件中设置一个form表单,用按钮提交的方式来发送邮件。

来到index.html文件中,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/index/" method="POST">
    {% csrf_token %}
    <button type="submit">发送邮件</button>
</form>
</body>
</html>

此时views.py文件中的代码需要做一个判断处理。代码如下:

from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail
from django.conf import settings
# Create your views here.

def send_email(request):
    # 值1:邮件标题
    # 值2:邮件主题
    # 值3:发件人
    # 值4:收件人,必须是列表或者元组
    if request.method == 'POST':
        res = send_mail('关于中秋节放假的通知','接上级领导{}的通知,中秋节放假三天,调休六天,连接国庆节假期七天,一共放假十六天。'.format('XXX'),settings.EMAIL_HOST_USER,('[email protected]',))

        if res == 1:
            return HttpResponse('邮件发送成功!')
        else:
            return HttpResponse('邮件发送失败')
    else:
        return render(request,'index.html',)

下面我们尝试发送给多个账号。同样是在views.py文件中做处理,代码如下:

from django.shortcuts import render
from django.http import HttpResponse
from django.core.mail import send_mail,send_mass_mail
def send_mass_email(request):
    message1 = ('物流信息','您的包裹已经发出',settings.EMAIL_HOST_USER,('[email protected]','[email protected]'))
    message2 = ('物流信息','您的包裹显示已经签收',settings.EMAIL_HOST_USER,['[email protected]','[email protected]'])

    res = send_mass_mail((message1,message2))
    if res == 2:
        return HttpResponse('多封邮件发送成功')
    else:
        return HttpResponse('多封邮件发送失败')

此时在urls.py文件中添加以上路由并且要在index.html文件中更改form的路由,代码分别如下:

urls.py文件中:

from django.contrib import admin
from django.urls import path
from myApp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('send_email/',views.send_email),

index.html文件中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/send_email/" method="POST">
    {% csrf_token %}
    <button type="submit">发送邮件</button>
</form>
</body>
</html>

最后再尝试发送一个链接。流程与上面基本类似,下面附上代码:

views.py文件中:

from django.shortcuts import render
from django.http import HttpResponse
# 引入发送邮件的模块
from django.core.mail import send_mail,send_mass_mail,EmailMultiAlternatives
from django.conf import settings
# Create your views here.
def send_html(request):
    # return HttpResponse('html')
    html_message = '<a href="http://www.baidu.com">百度</a>'
    res = EmailMultiAlternatives('商品链接','请点击下面的连接:'+html_message,settings.EMAIL_HOST_USER,('[email protected]',))

    res.content_subtype = 'html'
    res.send()
    return HttpResponse(res)

urls.py文件中:

from django.contrib import admin
from django.urls import path
from myApp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('sendHtml/',views.send_html)
]

index.html文件中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/sendHtml/" method="POST">
    {% csrf_token %}
    <button type="submit">发送邮件</button>
</form>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_39138295/article/details/82527868