创建项目如下所示:
来到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文件连接起来。
扫描二维码关注公众号,回复:
3546779 查看本文章
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>