Django 1.3.1でAmazonの新しいSMTPサービスをSESに使用しようとしていますが、あまり運がありません。
SES SMTP資格情報を作成し、これを設定に含めました。
EMAIL_USE_TLS = True
EMAIL_Host = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_Host_USER = 'my-smtp-user'
EMAIL_Host_PASSWORD = 'my-smtp-password'
EMAIL_PORT = 465
次に、テストメールを送信してみます(確認済みのメールアドレスとの間で):
from Django.core.mail import send_mail
send_mail('Test subject', 'This is the body', '[email protected]',['[email protected]'], fail_silently=False)
しかし、次のエラーが発生します。
SMTPServerDisconnected: Connection unexpectedly closed
サーバーにtelnetで接続できます。
telnet email-smtp.us-east-1.amazonaws.com 465
何かご意見は?
ありがとう、G
みんなに推薦してくれてありがとう、しかし私はついに私がDjangoの組み込みのメールクラスを使うことを可能にするもっと簡単な解決策を見つけたので、私はまだ私の管理者エラーメールレポートなどを得ることができます。
この小さな美しさのおかげで、私は問題なくSESSMTPを使用することができました。
https://github.com/bancek/Django-smtp-ssl
ダウンロードしてインストールします(python setup.py install)
次に、この新しいメールバックエンドを使用するように設定を変更します。
EMAIL_BACKEND = 'Django_smtp_ssl.SSLEmailBackend'
残りの設定は通常どおりです。
EMAIL_Host = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = 465
EMAIL_Host_USER = 'my_smtp_username'
EMAIL_Host_PASSWORD = 'my_smtp_password'
EMAIL_USE_TLS = True
いいね。
G
Django 1.7では、サードパーティのライブラリなしでSSLを使用してネイティブにメールを送信できます。
EMAIL_USE_SSL = True
https://docs.djangoproject.com/en/1.7/ref/settings/#std:setting-EMAIL_USE_SSL
長い間検索して試した後、私は見つけました:
代わりに以下を使用します。
s = smtplib.SMTP(Host, port)
s.starttls()
s.login(user, password)
AmazonSESの場合、SMTPは次のようにする必要があります。
s = smtplib.SMTP_SSL(Host, port)
s.login(user, password)
したがって、Djangoの場合、Djangoコードを修正するか、デフォルトのDjangoメールバックエンド]。
[〜#〜] upd [〜#〜]:
私は別の解決策を見つけました(しかし私自身ではテストしていません):以下のリンクからSSLEmailBackendを使用してください
// settings.py
EMAIL_BACKEND = 'backends.smtp.SSLEmailBackend'
(ここから: Django + uWSGI +メールを送信 の不思議な問題
UPD2:
AmazonSESはこれからSTARTTLSをサポートします:)
Amazon SESは、SMTP用の拡張添付ファイルタイプ、VERP、およびSTARTTLSをサポートします
(Amazonニュースレターから)
頭を骨折するのに3時間ほどかかりました。 s.starttls()、次にs.login()を使用したsmtplibに関するソリューションは、同じファイルにすべての電子メール資格情報を含むpythonプログラムで適切です。はDjangoでそれを行うためのクリーンな方法です。それで、私はついにそれを理解しました。マシンが32ビットか64ビットかに関係なく、次の手順を実行するだけです。
Botoをインストールする
pip install --upgrade boto
Django-sesをインストールします
pip install Django-ses
Djando settings.pyファイルで、次の情報を更新します。
EMAIL_BACKEND = 'Django_ses.SESBackend'
AWS_ACCESS_KEY_ID = 'your_username'
AWS_SECRET_ACCESS_KEY = 'your_password'
メールを送信したいDjangoファイル内
django.core.mailからimportsend_mail
send_mail( 'Test subject'、 'This is the body'、 '[email protected]'、['[email protected]']、fail_silently = False)
http://aws.Amazon.com/articles/240550273705565
コアpython機能サンプル
@Givp(上記の回答者)にsmtp設定を試しましたが、Djangoで完全なAWSSMTP設定を提供したいと思います。
DEFAULT_FROM_EMAIL = '[email protected]'
ADMINS = [('name', '[email protected]')]
MANAGERS = ADMINS
SERVER_EMAIL = '[email protected]' # this is for to send 500 mail to admins
EMAIL_BACKEND = 'Django_smtp_ssl.SSLEmailBackend'
MAIL_Host = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = 465
EMAIL_Host_USER = 'Accesskeyofsmtp'
EMAIL_Host_PASSWORD = 'secretkeyofsmtp'
EMAIL_USE_TLS = True
ここでは、メールを送信する前にすべてのメールIDを確認する必要があります。そうすると、すべてが期待どおりに機能します。