0

Djangoコードでの電子メール送信が機能せず、「[Errno 10061]ターゲットマシンが積極的に拒否したため、接続できませんでした」というエラーが表示されますこれらは私のVIEWS.PYです

def send_email(request):
username = request.POST.get('username', '')
from_email = request.POST.get('from_email', '')
message = request.POST.get('message', '')
if username and message and from_email:
    try:
        send_mail(username, from_email, message,  ['canonizadocharm@ymail.com'])
    except BadHeaderError:
        return HttpResponse('Invalid header found.')
    return HttpResponseRedirect('/contact/thanks/')
else:
    # In reality we'd use a form class
    # to get proper validation errors.
    return HttpResponse('Make sure all fields are entered and valid.')

これらは私のcontact.htmlです

<FORM METHOD="POST" ACTION="/send_email/" >
{% csrf_token %}
Name: <INPUT TYPE="text" NAME="username"><BR>
Email: <INPUT TYPE="text" NAME="from_email"><BR>
Message: <BR>
<TEXTAREA NAME="message" ROWS="10" WRAP="hard">
</TEXTAREA>
<INPUT NAME="redirect" TYPE="hidden">
<INPUT NAME="NEXT_URL" TYPE="hidden">
<BR>
<INPUT TYPE="submit" VALUE="Send">
<INPUT TYPE="reset" VALUE="Clear">
</FORM>

これらは私のURLS.PY です

url(r'^send_email/', views.send_email),
url(r'^contact/', views.contact),
url(r'^thanks/', views.thanks),

と私のSETTINGS.PY

EMAIL_HOST = 'localhost'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_PORT = 25
EMAIL_USE_TLS = True
4

3 に答える 3

3

actionフォームの値は、ビューの URL を指している必要がありmailto:canonizadocharm@ymail.comます。サーバー上の有効なパスではありません。

更新:

たとえば、次のように urls.py に新しいルールを追加します。

url(r'^mail/', views.send_mail),

次に、アクションの値を に変更しmailます。

于 2013-02-07T03:24:39.793 に答える
0

アクション値がURLを指すようにし、URLがビューの1つを指すようにします。たとえば、urls.pyでこれを行うことができます。

url(r'^email/', 'project.views.send_email')

これにより、お問い合わせフォームがsend_mailビューにルーティングされます。

于 2013-02-07T03:37:06.457 に答える
0

テンプレートのフォームに csrf がないため、「CSRF 検証に失敗しました」というエラーが表示されます。

 <FORM METHOD=POST ACTION="/send_email/" ENCTYPE="text/plain">{% csrf_token %}
 ...........
 </FORM>

csrf とは何かを知りたい場合は、次のリンクにアクセスしてください:
https://docs.djangoproject.com/en/dev/ref/contrib/csrf/


たとえば、次のように、settings.py でメール設定を作成します。

設定.py

# Sending mail
EMAIL_USE_TLS = True
EMAIL_HOST='smtp.gmail.com'
EMAIL_PORT=587
EMAIL_HOST_USER='your gmail account'
EMAIL_HOST_PASSWORD='your gmail password'

ビュー.py

from django.core.mail import send_mail

def send_email(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        message = request.POST.get('message')
        from_email = request.POST.get('from_email')
        send_mail(username, message, from_email, ['canonizadocharm@ymail.com',])
        return HttpResponseRedirect('/contact/thanks/')
    else:
        return HttpResponse('Make sure all fields are entered and valid.')
于 2013-02-07T03:48:48.027 に答える