5

プロジェクトでdjango-registrationを使用して、ユーザー登録やログインなどを管理しています。しかし、アカウントにサインアップすると、次の問題が発生しました。

SMTPServerDisconnected

記録のために、settings.pyでメール関連の設定を構成しました。

EMAIL_HOST = 'smtp.gmail.com'                                                                                                                                           
EMAIL_PORT = 465
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'

また、必要なすべてのテンプレートがあり、アクセスできます。したがって、この問題はそれとは何の関係もありません。

その他のエラーの説明:

アクティベーションメールの送信をクリックした後、最終的にエラーが発生するまでに長い時間がかかります。

トレースバックは次のとおりです(完全ではありません)。

SMTPServerDisconnected at /accounts/register/

Connection unexpectedly closed

last trace back:

/usr/lib/python2.7/smtplib.py in getreply

                    line = self.file.readline()

                except socket.error as e:

                    self.close()

                    raise SMTPServerDisconnected("Connection unexpectedly closed: "

                                                 + str(e))

                if line == '':

                    self.close()

                    raise SMTPServerDisconnected("Connection unexpectedly closed")

    ...

                if self.debuglevel > 0:

                    print>>stderr, 'reply:', repr(line)

                resp.append(line[4:].strip())

                code = line[:3]

                # Check that the error code is syntactically correct.

                # Don't attempt to read a continuation line if it is broken.

提案をありがとう。

4

5 に答える 5

8

少なくとも1つの設定が間違っていると思います。TLSにはポート587が必要です[1]

EMAIL_PORT = 587

[1] http://support.google.com/mail/bin/answer.py?hl=en&answer=13287

于 2012-09-21T08:45:50.900 に答える
2

ついに私はこれを理解しました。他の誰かがここで立ち往生した場合に備えて、ここに解決策を投稿します。問題はGmailポートです。587を使用すると機能しました。

私はここでそれを見ました:https ://code.djangoproject.com/ticket/9575

なぜ465を使える人もいれば使えない人もいるのだろうか。見つけるのに数時間かかりました。あなたたちがそうしないことを願っています!

編集:ポートの使用に関する詳細については、こちらを参照してください。

To use port 465, you need to call smtplib.SMTP_SSL(). Currently, it looks like Django only uses smtplib.SMTP().

587が正しい選択のようです。

于 2012-09-21T08:48:52.640 に答える
1

その間、https://github.com/bancek/django-smtp-sslを確認することをお勧めします

于 2013-06-07T19:42:25.017 に答える
1
Django Gmail Confi#settings.py
EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_SSL = True    # use port 465
EMAIL_USE_TLS = False    # use port 587
EMAIL_PORT = 465 # OR 587
EMAIL_HOST_USER =  os.environ.get('USER_EMAIL')
EMAIL_HOST_PASSWORD =os.environ.get('USER_EMAIL_PASS')  
helper.py(関数)
from django.core.mail import send_mail
def send(sub=None,message=None,recipient=[]):
    # def send_mail(
                    # subject,
                    # message,
                    # from_email,
                    # recipient_list,
                    # fail_silently=False,
                    # auth_user=None,
                    # auth_password=None,
                    # connection=None,
                    # html_message=None):

    send_mail(subject='contact mail'
                       ,message='Test Mail'
                       ,from_email=EMAIL_HOST_USER
                       ,recipient_list=['mail_list']
                       ,fail_silently=False)
    return True
于 2020-11-07T06:17:24.057 に答える
0

上記の回答がうまくいかない場合は、settings.pyでDEFAULT_FROM_EMAILが設定されているかどうかを確認することをお勧めします。

    # project/settings.py
    EMAIL_HOST = 'smtp.gmail.com'                                                                                                                                           
    EMAIL_PORT = 465
    EMAIL_USE_TLS = True
    EMAIL_HOST_USER = 'myemail@gmail.com'
    EMAIL_HOST_PASSWORD = 'mypassword'
    DEFAULT_FROM_EMAIL = 'myemail@gmail.com'
于 2016-02-07T21:02:40.217 に答える