本文使用的python版本为2.7.3
在Django中使用send_mail发送邮件可能会导致Forbidden (403) CSRF verification failed. Request aborted.错误,或是发送不成功。其使用前要做如下配置,各位可以对照检查
1. 首先,要设置setting.py中的mail config 信息。添加如下语句
# email config
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='user@gmail.com'
EMAIL_HOST_PASSWORD='password'
EMAIL_USE_TLS = True
2. 配置完email选项后,开始配置django的发送环境
在提示中说需要在MIDDLEWARE中添加django.middleware.csrf.CsrfViewMiddleware,然而在我们的python版本中,恰恰要注释掉该语句,才能正确发送
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
3. 在form表单中添加{% csrf_token %}
<form action="" method="post">
{% csrf_token %}
<div class="row">
……
4. 使用RequestContext,在views.py中,添加
from django.template import RequestContext
…………
return render_to_response('thanks.html',
Context(),
context_instance=RequestContext(request))