5

Django プロジェクトsettings.pyには以下が含まれます。

EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.gmail.com"
EMAIL_HOST_USER = "you.cant.see.me@gmail.com"
EMAIL_HOST_PASSWORD = "thug_life"
EMAIL_PORT = 587
EMAIL_USE_TLS = True

私のアプリケーションviews.pyには以下が含まれています

def send_classic_email(request):
    from django.core.mail import send_mail
    send_mail(
        subject = "Tale of two cities",
        from_email = "Charles Dickens <you.cant.see.me@gmail.com>",
        recipient_list = ["someone@example.com"],
        message = "There were 2 cities",
        html_message = "<p>There were 2 cities</p>",
        fail_silently = False,
    )
    print "Absolutely Perfectly Done"

ローカルホストから試しました。SMTPAuthenticationError見返りを得た:

SMTPAuthenticationError at /send_classic_email/
(534, '1.3.95 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=fsadjSADJH\n1.3.95 
fjkshFHAKSHkdfshkfkhj-sfjdhFsadASDA_\n1.3.95 
dasdASDADas-aDas-hfhjsadASDSAhjjhd\n1.3.95 
ADSaSADkja_adhjkADKjhads-ASADS_SDAKjadAKJhsADS-k\n1.3.95 
sadhkjADSAKJSDJAlkjdaA> Please log in via your web browser and\n1.3.95 
then try again.\n1.3.95  
Learn more at\n1.3.95  
https://support.google.com/mail/answer/78754 dkahASDASlkjdas.25 - gsmtp')

次に、https://www.google.com/settings/security/lesssecureappsにアクセスして、設定を有効にしましたless secure app

その後、localhost から再試行しました。これを得ました:

絶対に完璧に完了

このコードそのものを AWS EC2 にデプロイしました。EC2から試しました。再び同じを得ましたSMTPAuthenticationError

SMTPAuthenticationError at /send_classic_email/
(534, '1.3.95 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=fsadjSADJH\n1.3.95 
fjkshFHAKSHkdfshkfkhj-sfjdhFsadASDA_\n1.3.95 
dasdASDADas-aDas-hfhjsadASDSAhjjhd\n1.3.95 
ADSaSADkja_adhjkADKjhads-ASADS_SDAKjadAKJhsADS-k\n1.3.95 
sadhkjADSAKJSDJAlkjdaA> Please log in via your web browser and\n1.3.95 
then try again.\n1.3.95  
Learn more at\n1.3.95  
https://support.google.com/mail/answer/78754 dkahASDASlkjdas.25 - gsmtp')

EC2 セキュリティ グループに移動しました。

  • すべてのソースからのSMTP ポートの受信規則が有効になっています。
  • すべての宛先へのすべてのプロトコルを介したすべてのポートのすべてのトラフィックのアウトバウンド ルールが有効になっています。

それでも同じSMTPAuthenticationErrorです。

EC2 インスタンスからではなく、localhost から正常に動作するのはなぜですか?

走り続けるDjango 1.8.0_Python 2.7.6Ubuntu 14.04.3 LTS

4

2 に答える 2

16

Django が送信できるようにするには、おそらく Captcha のロックを解除する必要があります: accounts.google.com/displayunlockcaptcha

キャプチャは、次のページに移動するためにフォームに入力する必要がある小さな文字です。これは、ほとんどの企業が頼りにしているセキュリティ対策です。

ローカルホストでそれを回避できる理由は、本質的にキャプチャを管理している会社だからです. サーバーに「何があっても送信してください。安全です」と伝えています。ただし、この例では、Google がキャプチャを管理しています。Amazon を使用しているため、メールをブロックすることは、Google がサーバーを保護し、Amazon がスパムでないことを確認する方法です。リンクをクリックすることで、あなたのメールからの発信接続をすべて許可するよう Google に指示することになります。

それは理にかなっていますか?

于 2016-02-27T17:08:16.067 に答える
1

Amazonはこれを許可していないように感じます。彼らはあなたがサーバーからメールを送信することを本当に望んでいないので、それをブロックします. これは基本的に、仮想トラックで EC2 から電子メールを送信していたスパマーを避けるためです。代わりに、mailgun (AWS が本当に好きなら SES ですが、おそらく私は使いたくないでしょう) のようなものを使用して、メールの送信を処理することをお勧めします。mailgun には便利なdjango 電子メール バックエンドがあるため、コードを変更する必要はまったくありません。

于 2016-02-26T20:56:32.637 に答える