私と同様の20の質問があることは知っていますが、Djangoで動作するメールを取得するために1日以上試みました。
このエラーが発生しています:[Errno 111] Connection refused
メールを送信しようとすると
これは私が電子メールを作成し、私のビューでそれを送信しようとする場所です:
try:
msg = EmailMessage(subject, message, from_email, [receiver])
msg.content_subtype = "html"
msg.send()
私の設定ファイルは次のとおりです。
EMAIL_Host = "localhost"
DEFAULT_FROM_EMAIL = "[email protected]"
EMAIL_PORT = 25
EMAIL_BACKEND = "Django.core.mail.backends.smtp.EmailBackend"
私はpython -m smtpd -n -c DebuggingServer localhost:1025
を使用してテスト送信を試みましたが成功しましたが、実際にそれを行うことになり、成功しません。
シェルからsend_mailを実行しようとすると、このトレースバックが表示されます。
>>> from Django.core.mail import send_mail
>>> send_mail('Test', 'Test', '[email protected]', ['[email protected]'])
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/Django/core/mail/__init__.py", line 61, in send_mail
connection=connection).send()
File "/usr/local/lib/python2.6/dist-packages/Django/core/mail/message.py", line 251, in send
return self.get_connection(fail_silently).send_messages([self])
File "/usr/local/lib/python2.6/dist-packages/Django/core/mail/backends/smtp.py", line 79, in send_messages
new_conn_created = self.open()
File "/usr/local/lib/python2.6/dist-packages/Django/core/mail/backends/smtp.py", line 42, in open
local_hostname=DNS_NAME.get_fqdn())
File "/usr/lib/python2.6/smtplib.py", line 239, in __init__
(code, msg) = self.connect(Host, port)
File "/usr/lib/python2.6/smtplib.py", line 295, in connect
self.sock = self._get_socket(Host, port, self.timeout)
File "/usr/lib/python2.6/smtplib.py", line 273, in _get_socket
return socket.create_connection((port, Host), timeout)
File "/usr/lib/python2.6/socket.py", line 561, in create_connection
raise error, msg
error: [Errno 111] Connection refused
私はこれでどこにも行かないようです。どんな助けやアドバイスも大歓迎です。ありがとう
また、他に見たいことがあれば、コメントしてください。
Gmailアカウントを使用しようとしていますか?たぶんこれを試してください:
EMAIL_Host = 'smtp.gmail.com'
EMAIL_Host_USER = '[email protected]'
EMAIL_Host_PASSWORD = 'your-password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
次に、テスト(Django <1.4)を試みます
python manage.py Shell
>>> from Django.core.mail import send_mail
>>> send_mail('test email', 'hello world', to=['[email protected]'])
そして、Django 1.4を使用する場合、これを使用します:
python manage.py Shell
>>> from Django.core.mail import send_mail
>>> send_mail('test email', 'hello world', '[email protected]', ['[email protected]'])
Gmailアカウントを使用していないのに問題が解決しない場合は、EMAIL_Host_USER
およびEMAIL_Host_PASSWORD
あなたが持っているものに。それでも問題が解決しない場合は、ネットワークがブロックしている可能性があります。 OSまたはルーターのファイアウォール。
更新された構文を提供してくれたkniteに感謝します。彼に+1を投げてください そして、Django 1.4
_EMAIL_Host = 'smtp.gmail.com'
EMAIL_Host_USER = '[email protected]'
EMAIL_Host_PASSWORD = 'Application spectific password(for eg: smbumqjiurmqrywn)'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
_
_python manage.py Shell
>>> from Django.core.mail import send_mail
>>> send_mail('Test', 'This is a test', '[email protected]', ['[email protected]'],
fail_silently=False)
_
@mongoose_zaには素晴らしい答えがありますが、Django 1.4+では構文が少し異なります。
の代わりに:
send_mail('test email', 'hello world', to=['[email protected]'])
使用する
send_mail('test email', 'hello world', '[email protected]', ['[email protected]'])
最初の4つの引数、subject、message、from_email、recipient_listが必要です。
私はGMailの使用を避けます。いくつかのメールで機能しますが、その後、すべてのメールが拒否またはスパム缶に入れられていることがわかります。これを解決するためにDjango-SESでAmazonの「SES」サービスを使用しました。
Settings.pyで、smtpをバックエンドとして使用し、コンソールではないを使用します
EMAIL_BACKEND = 'Django.core.mail.backends.smtp.EmailBackend'
サーバーのsettings.pyまたはlocal_settings.pyファイルに次の最小限の設定を追加します。
EMAIL_Host = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
多くの制限を課すsmtp.gmail.comを使用する代わりに、独自のメールサーバーを使用できます。
あなたはあなた自身のメールサーバーをインストールすることでそれを行うことができます:
Sudo apt-get install sendmail