Django 发送email配置详解及各种错误类型

跟随Django Book的内容发送邮件不成功,总结一下需要配置好settings.py文件,还要注意一些细节。

1、在settings文件最后添加以下内容,缺一不可!

EMAIL_HOST= ‘smtp.163.com‘
EMAIL_PORT= 25
EMAIL_HOST_USER = ‘[email protected]‘(你有163邮箱的话)
EMAIL_HOST_PASSWORD = ‘xxxxxxx‘
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER

这里Host邮箱最好还是写163的,qq的我试过不行,别的也不敢保证可以。如果出现“STARTTLS extension not supported by server”这种错误类型很有可能是邮箱不支持。

2、出现Forbidden (403)“CSRF verification failed. Request aborted.”的错误

需要添加{% csrf_token %}到form中去,<form action="/contact/" method="post">{% csrf_token %}<p>...</p>...</form>

之后在contact()方法的views.py中添加from django.template import RequestContext并且最后一句改为return render_to_response(‘contact_form.html‘,{‘errors‘: errors}, context_instance=RequestContext(request))即可

3、我的目录结构是这样的:

mysite-->

books/

contact/

mysite/

templates/

manage.py

4.最后附上完整代码

templates/contact_form.html文件如下

  1. <html>

  2.  

    <head>

  3.  

    <title>Contact us</title>

  4.  

    </head>

  5.  

    <body>

  6.  

    <h1>Contact us</h1>

  7.  

  8.  

    {% if errors %}

  9.  

    <ul>

  10.  

    {% for error in errors %}

  11.  

    <li>{{ error }}</li>

  12.  

    {% endfor %}

  13.  

    </ul>

  14.  

    {% endif %}

  15.  

  16.  

    <form action="/contact/" method="post">{% csrf_token %}

  17.  

    <p>Subject: <input type="text" name="subject"></p>

  18.  

    <p>Your e-mail (optional): <input type="text" name="email"></p>

  19.  

    <p>Message: <textarea name="message" rows="10" cols="50"></textarea></p>

  20.  

    <input type="submit" value="Submit">

  21.  

    </form>

  22.  

    </body>

  23.  

    </html>

contact/views.py文件如下:

  1. from django.core.mail import send_mail

  2.  

    from django.http import HttpResponseRedirect

  3.  

    from django.shortcuts import render

  4.  

    from django.template import RequestContext

  5.  

    def contact(request):

  6.  

    errors = []

  7.  

    if request.method == ‘POST‘:

  8.  

    if not request.POST.get(‘subject‘, ‘‘):

  9.  

    errors.append(‘Enter a subject.‘)

  10.  

    if not request.POST.get(‘message‘, ‘‘):

  11.  

    errors.append(‘Enter a message.‘)

  12.  

    if request.POST.get(‘email‘) and ‘@‘ not in request.POST[‘email‘]:

  13.  

    errors.append(‘Enter a valid e-mail address.‘)

  14.  

    if not errors:

  15.  

    send_mail(

  16.  

    request.POST[‘subject‘],

  17.  

    request.POST[‘message‘],

  18.  

    request.POST.get(‘email‘, ‘[email protected]‘),

  19.  

    [‘接收信件的邮箱!‘],

  20.  

    )

  21.  

    return HttpResponseRedirect(‘/contact/thanks/‘)

  22.  

    return render(request, ‘contact_form.html‘,

  23.  

    {‘errors‘: errors},context_instance=RequestContext(request))

mysite/mysite/urls.py如下:

  1. from django.conf.urls import *

  2.  

    from django.contrib import admin

  3.  

    from books import views

  4.  

    from mysite.views import emailsuccess

  5.  

    from contact.views import contact

  6.  

    admin.autodiscover()

  7.  

  8.  

    urlpatterns = patterns(‘‘,

  9.  

    (r‘^contact/$‘,contact),

  10.  

    (r‘^contact/thanks/$‘,emailsuccess),

  11.  

    )

mysite/mysite/views.py文件如下:

  1. from django.http import HttpResponse,Http404

  2.  

    def emailsuccess(request):

  3.  

    return HttpResponse("Send Succeed!")

欢迎交流讨论,共同学习!

转载请注明出处:http://blog.csdn.net/monkeyduck

原文地址:https://www.cnblogs.com/ExMan/p/9471097.html

时间: 2024-11-08 21:46:54

Django 发送email配置详解及各种错误类型的相关文章

redmine邮件发送功能配置详解

redmine的邮件发送功能还是很有用的. 像项目有更新啦,任务分配啦,都能邮件发送的相关责任人. 我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了. 查了网上的资料,都是讲修改下配置文件就可以了,他们没错,只是没有讲全. 下面是我整理的一个redmine邮件发送功能设置的一个完整流程. 1. sendmail安装与检查 linux机器上安装的redmine要能发送邮件,先得是本机的sendmail功能是正常的. 查看sendmail进程是否已正常启动: $ ps au

Django+uwsgi+nginx配置详解

操作系统是ubuntu 更新源 1 apt-get update 安装 Nginx 和 uWSGI 1 apt-get install nginx uwsgi uwsgi-plugin-python 安装 Python 相关环境 1 apt-get install python-dev python-virtualenv python-pip 这里如果安装不成功,可以分开安装,试过一次,分开安装才成功,原因目前以我的水平还发现不了,很遗憾. 安装 MySQL 1 apt-get install 

LVS配置详解

一.LVS系统组成 前端:负载均衡层 –      由一台或多台负载调度器构成 中间:服务器群组层 –      由一组实际运行应用服务的服务器组成 底端:数据共享存储层 –      提供共享存储空间的存储区域 二.LVS术语 Director Server:调度服务器,将负载分发到RealServer的服务器 Real Server:真实服务器,真正提供应用服务的服务器 VIP:虚拟IP地址,公布给用户访问的IP地址 RIP:真实IP地址,集群节点上使用的IP地址 DIP:Director连

Log4J日志配置详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <

keepalived的配置详解(非常详细)

keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报  分类: 运维学习(25)  转载自:http://blog.csdn.net/u010391029/article/details/48311699 1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简化了一些功能. 2. 协议说

redis服务部署及配置详解

Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集合和有序集合.支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能.所以Redis也可以被看成是一个数据结构服务器. Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为"半持久化模式"):也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为"全

Nginx配置文件(nginx.conf)配置详解

Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. error_log  logs/error.log; error_log  logs/error.log  notice; error_log  logs/error.log  info; 错误日志:存放路径. pid logs/nginx.pi

log4j.properties配置详解

stone 的 log4j配置详解 Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境. 1. 配置文件Log4J配置文件的基本格式如下: #配置根Loggerlog4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …#配置日志信息输出目的地Appenderlog

log4j 配置详解

一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR <