电子邮件未发送,但使用django表单显示成功消息

时间:2013-06-19 14:24:21

标签: django django-forms django-templates

一切正常,我收到了电子邮件发送时设置的Succes消息。但它只是不发送电子邮件到给定的地址。 当我提交表单时,我在终端中收到以下消息,本地服务器正在运行。我相信200信息意味着沟通成功。

  

“POST / submit / HTTP / 1.1”200 10141

在我的views.py,settings.py,forms.py和模板文件下面给出。

views.py

from django.shortcuts import render_to_response
from django.template import RequestContext
from .forms import SubmitForm
from django.template import Context, loader

from django.core.mail import send_mail,EmailMessage



def submit(request):
  success = False
  success_message = " Thanks!"


  form = SubmitForm(request.POST or None)

    if form.is_valid():
        original_title = request.POST.get('original_title')
        english_title = request.POST.get('english_title')

        sent_email = 'receive@email.com'
        message_template = loader.get_template('submit.txt')
        message_context = Context({      'original_title':original_title,'english_title':english_title,
                                    })
        mail = EmailMessage(original_title, english_title, [sent_email])
        mail.send()
        success = True


    return render_to_response('submit.html',
                        {'form' : form,'success': success,'success_message':success_message},
                          context_instance=RequestContext(request))

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sender@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = 'Sample < example@gmail.com >

forms.py

from django import forms
from django.conf import settings
from django.core.cache import cache
from django.contrib.admin import widgets    
from django.shortcuts import get_object_or_404
import os


class SubmitForm(forms.Form):
  title = forms.CharField()
  name = forms.CharField()

submit.html

                <form method="post" action="{% url 'submit' %}" style="width:75%;margin:auto">{%csrf_token%}

                <legend>Title</legend>
                    <br/>

                    <div class="row">

                        <dl class="field">
                            <dd><label>Title: *</label></dd>

                            <dt class="text">{{ form.name.errors }}
                                             {{ form.original_title }}</dt>

                            <dd class="msg">You filled this out wrong.</dd>
                        </dl>

                        <dl class="field ">
                            <dd><label>English Title: *</label></dd>

                            <dt class="text">{{ form.name.errors }}
                                                {{ form.english_title }}</dt>

                            <dd class="msg">You filled this out wrong.</dd>
                        </dl>


                        <input class="submit three columns" type="submit" value="Register"/>

我也以正确的方式添加了submit.txt。当我点击提交但没有发送电子邮件时,我得到了success_message。

1 个答案:

答案 0 :(得分:0)

初始化EmailMessage时,第三个参数是起始地址。您似乎有一个包含接收者地址的列表。

确保以as the docs

的相同方式创建邮件
email = EmailMessage('Hello', 'Body goes here', 'from@example.com',
            ['to1@example.com', 'to2@example.com'], ['bcc@example.com'],
            headers = {'Reply-To': 'another@example.com'})