[Django]在Django中发送邮件功能

一.为什么能实现邮件发送。

Django是python的一个比较强悍的框架。我们可以使用Django中自带的一个方法。send_email().这个方法。其实是对我们python自带的email模块进行了封装。具体的封装的在:

django >  core > mail > message 
源码赏析:
from email.header import Header
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.message import MIMEMessage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate, getaddresses, parseaddr
........
后面的省略了,感兴趣的同学可以自己看看。

二.第一步设置。

在Django中我们发送邮件可以这样去实现。首先你要在settings.py中定义几个全局变量。

# 邮箱配置服务器地址
EMAIL_HOST = 'smtp.qq.com'
#该服务器所对应的端口
EMAIL_PORT = 25
# 发邮件的邮箱即登陆服务器的邮箱账号
EMAIL_HOST_USER = '[email protected]'
# 邮箱中的授权密码
EMAIL_HOST_PASSWORD = '等会说'
# 是否加密传输
EMAIL_HOST_TLS = False
# 收件人看到的邮箱发件人
EMAIL_FROM = 'PYTHON<[email protected]>'

刚才说到授权码,下面给大家展示授权码怎么获取。
1.首先需要登陆QQ邮箱(以QQ邮箱为例)


登陆QQ邮箱

2.开启smtp协议。获取授权码。

开启smtp协议

3.获取授权码。
发短信

4 .发完短信之后,就可以根据获得授权码填写到上面的等会说。此地的授权码不是之前的我们的QQ密码,而是独立生成的。

三.编写前端代码。

前端页面mail.html




        
        这是邮件发送的页面


{% csrf_token %}

四.编写路由以及视图

#路由
urlpatterns = [
    url(r'^mail/$',EmailView.as_view())
]
 # 视图

from django.core.mail import send_mail
from django.views.generic.base import View

class EmailView(View):
    def get(self, request):
           return render(request,'mail.html')
    def post(self,request):
        mail = request.POST.get('mail','')
        if mail:
            email_title = '这是一个测试邮件'
            email_body = '恭喜你收到了测试邮件'
            send_status = send_mail(
                email_title,
                email_body,
                EMAIL_FROM,
                [mail])
            if send_status:
                return HttpResponse('发送成功')
        else:
            return HttpResponse('发送失败')

五.大功告成。

收工

你可能感兴趣的:([Django]在Django中发送邮件功能)