1

すべて正常に動作し、メールの送信時に設定した成功メッセージが表示されます。しかし、指定されたアドレスにメールを送信していないだけです。また、ローカルサーバーが実行されているフォームを送信すると、ターミナルに次のメッセージが表示されます。200 メッセージは、通信が成功したことを意味すると思います。

"POST /submit/ HTTP/1.1" 200 10141

以下に、views.py、settings.py、forms.py、およびテンプレート ファイルを示します。

ビュー.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))

設定.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 >

フォーム.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 が表示されますが、メールは送信されません。

4

1 に答える 1