博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用表单发送邮件
阅读量:4683 次
发布时间:2019-06-09

本文共 2101 字,大约阅读时间需要 7 分钟。

前提:配置settings.py

 

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_USE_TLS = FalseEMAIL_HOST = 'smtp.126.com'   # 主机EMAIL_PORT = 25  # 端口EMAIL_HOST_USER = 'xxxxxxxxx@126.com'  # 发件人邮箱EMAIL_HOST_PASSWORD = 'xxxxxxx'  # 密码DEFAULT_FROM_EMAIL = 'mail@126.com'  # 发件人

 

1.forms.py

from django import formsclass ContactForm(forms.Form):    subject = forms.CharField()    from_email = forms.EmailField()   # 发件方    to_email = forms.EmailField()     # 收件方    message = forms.CharField()

   对应的url模式为:

url(r'^contact/$', contact) 对应的表单样式为:

在上图中收件方利用qq邮箱失败,但可以利用126和outlook邮箱。

 

2.views.py

from django.core.mail import send_mailfrom django.shortcuts import render_to_responsefrom contact.forms import ContactFormfrom django.http import HttpResponseRedirect, HttpResponsefrom django.template import RequestContextdef contact(request):    if request.method == 'POST':        form = ContactForm(request.POST)        if form.is_valid():            cd = form.cleaned_data            send_mail(   # 调用django库中的send_main函数                cd['subject'],  # 主题                cd['message'],  # 内容                cd.get('from_email'),  # 发件人                       [cd.get('to_email')]  # 收件人列表            )            return HttpResponseRedirect('/contact/thanks/') # 发送成功则重定向到thanks页面    else:        form = ContactForm()  # 失败则为空表单    return render_to_response('contact_form.html', {
'form': form}, context_instance=RequestContext(request)) # 发送失败则返回表单页面def thanks(request): html = "Thanks" # 简单的页面显示Thanks return HttpResponse(html)
url(r'^contact/thanks/$', thanks)为感谢页面url 3.contact_form.html
    Contact us    

Contact us

{% csrf_token %}
{
{ form.as_table }}

 

4.发送结果

 

 

 

5.流程解释

首先访问contact/时,urls将其指向views.py中的contact函数(由语句url(r'^contact/$', contact))实现。

因为此时没有提交任何东西,所以语句 request.method=='POST'不成立,直接执行 form = ContactForm()语句,并返回 contact_form.html页面。

此时填写好表单提交后,若数据合法则送邮件,然后执行语句重定向到 /contact/thanks 网页。若数据不合法,则在contact_form.html页面上保留有填好的错误表单,并有错误提示(见下图)。

 

 
 
 
 

转载于:https://www.cnblogs.com/king-lps/p/7243990.html

你可能感兴趣的文章
函数的复写
查看>>
17_重入锁ReentrantLock
查看>>
winform窗口关闭提示
查看>>
64款工具,总有合适您的那款
查看>>
我的第一篇博客
查看>>
大数据学习线路整理
查看>>
【C++算法与数据结构学习笔记------单链表实现多项式】
查看>>
关于ProjectServer定制化项目中心页面
查看>>
使用Collectd + InfluxDB + Grafana进行JMX监控
查看>>
Linux下tar,zip命令详解
查看>>
C#垃圾回收机制
查看>>
31、任务三十一——表单联动
查看>>
Jenkins之Linux和window配置区别
查看>>
python之hasattr、getattr和setattr函数
查看>>
maven使用阿里镜像配置文件
查看>>
iOS开发UI篇—UITableview控件使用小结
查看>>
lesson1 预备知识
查看>>
Copy code from eclipse to word, save syntax.
查看>>
arguments.callee的作用及替换方案
查看>>
23 Java学习之RandomAccessFile
查看>>