すべて正常に動作し、メールの送信時に設定した成功メッセージが表示されます。しかし、指定されたアドレスにメールを送信していないだけです。また、ローカルサーバーが実行されているフォームを送信すると、ターミナルに次のメッセージが表示されます。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 が表示されますが、メールは送信されません。