Djangoからメールを送信しようとしています。GoogleAppsで設定されたメールを使用し、settings.py
ファイルは次のようになります。
EMAIL_Host = 'smtp.gmail.com'
EMAIL_Host_USER = '[email protected]'
EMAIL_Host_PASSWORD = 'password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
次を使用してメールを送信しようとすると:
from Django.core.mail import send_mail
send_mail("Happy new year", "We wish you the best for 3001",
"[email protected]", ["[email protected]"])
次のエラーが表示されます。
SMTPAuthenticationError:
(535, '5.7.1 Please log in with your web browser and then try again.
Learn more at
5.7.1 https://support.google.com/mail/bin/answer.py?answer=78754 k2sm758604obl.14')
グラフィカルユーザーインターフェイスのないリモートサーバーで作業しているため、ブラウザからログインすることさえできません。
https://accounts.google.com/DisplayUnlockCaptcha に移動して、[続行]をクリックします。これにより、他のサーバーからのアクセスが許可されます。
私はキュウリ/カピバラ/セレニウムのテストで数時間これをいじっていました-保証されたこのエラーを修正する愚かな何かを発見しました
あまりにも身近なエラー:
Please log in via your web browser: https://support.google.com/mail/accounts/answer/78754 (Failure) (Net::IMAP::NoResponseError)
判明したように、「Allow Less Secure Apps」トグルが2つあり、不明なデバイス/ IMAPからのログインを許可するために変更する必要があります。
ここに1つ: https://myaccount.google.com/security?pli=1#connectedapps (ページの下部)
そしてここに1つ: https://www.google.com/settings/security/lesssecureapps
これらのGODFORSAKEN TOGGLESの両方を変更して、このエラーメッセージを削除する必要があります。
編集:ユーザーMilothicusから( https://stackoverflow.com/users/3538026/milothicus ):myaccount.google.comで、「Sign-in&Security」の下で「Connected apps&sites」を選択します'。これには、「安全性の低いアプリを許可する」オプションもあります。これをオンにすると、サーバーから自動メールを送信できるようになりました。
アカウントにアクセスしようとすると、このリンクで構成されるこのメールが送信されました。 https://www.google.com/settings/security/lesssecureapps
テストを完了したら、オンにしてからオフにすることができます。
Google Appsサポートから次の応答がありました。
アウトバウンドリレーをオンにする必要があります。これをする:
- Google.com/a/yourdomain.comでアカウントにログインします
- [設定]タブをクリックし、左側の列で[メール]を選択します。
- [アウトバウンドリレー]セクションで、ドメインの外部でホストされている「差出人」アドレスを構成するときに、ユーザーが外部SMTP経由でメールを送信できるようにします。
- [変更を保存]をクリックします。
ヘルプリンクも提供しました: http://support.google.com/a/bin/answer.py?hl=ja&answer=176054
アウトバウンドリレーをオンにし、プロキシを使用してWebメールにもう一度ログインした後(@DaniloBargenと@joshcartmeに感謝)、問題は解決しました。アウトバウンドリレーとは何かを説明するリンクを読みましたが、なぜそれが必要なのかよくわかりません(外部SMTPサーバーを使用しているとは思わない)。
これが問題を解決したのかどうかはよく分からないので、確認を得るまで応答を承認済みとしてマークしません。
問題のサーバーへのsshトンネルをセットアップして、自宅のコンピューターからサーバーのIPを使用してgmail Webクライアントにログインできるようにします。おそらくポート80とポート443、おそらく443のみをトンネルする必要があります。Webクライアントを介してログインした後、SMTPAuthenticationErrorにリストされているナレッジベースの記事に従って問題は解決するはずです。
トンネルのセットアップ方法の例を次に示します。 http://www.noah.org/wiki/SSH_tunnel#simple_port_forwarding_.28SSH_tunneling.29
オプション#1(これは私のために働いた):
エラーを取得した後Please log in with your web browser and then try again. Learn more etc.
Webアプリケーションから電子メールを送信しようとしたときに、ローカルコンピューターからブラウザー経由で電子メールにログインしました。
ログインすると、上部に黄色の通知バーが表示され、外部アプリケーションにメールへのアクセスを許可するかどうかを尋ねられました。これを確認し、Googleは次の10分以内にアプリケーションからアカウントにログインするように要求しました。これにより、アプリケーションがホワイトリストに登録されます。
オプション#2:
オプション1が機能しない場合は、これを試してください: http://www.rocketideas.com/2012/05/gmail-error-password-not-accepted-from-server-solved/
etusmは、安全性の低いアプリを有効にする2つの場所を提供しました。
ここに1つ: https://myaccount.google.com/security?pli=1#connectedapps (ページの下部)
そしてここに1つ: https://www.google.com/settings/security/lesssecureapps
両方ともオンになりましたが、私のヘッドレスサーバーはまだメールを送信できませんでした。 JohnPangのgoogle +勧告に基づいて、安全性の低いアプリへのアクセスを許可する必要がある3番目の場所を見つけました。
myaccount.google.comの[サインインとセキュリティ]で[接続されたアプリとサイト]を選択します。これには、「安全性の低いアプリを許可する」オプションもあります。これをオンにすると、サーバーから自動メールを送信できるようになりました。
https://support.google.com/accounts/answer/185833?hl=en で解決策を見つけ、最後に https://security.google.com/settings/ security/apppasswords
ローカルマシンでプロジェクトをテストする場合は、後者のリンクに移動して、「安全性の低いアプリへのアクセス」を有効にする必要があります。
上記のすべてが私の場合には役に立ちません(奇妙です)。しかし、このリンクはあなたを助けるかもしれません:
https://security.google.com/settings/security/activity
Google Plusからアクセスできます
アプリアカウントで2要素認証が有効になっていますか?次に、そのアプリケーションにアプリケーション固有のパスワードを使用する必要がある場合があります。
現在(私の投稿日を見てください)、Gmailアカウント管理UIには「安全性の低いアプリを許可する」トグルが1つしかありません: https://myaccount.google.com/u/0/security#connectedapps
その後、ローカルコンピューター(MacまたはPC)から動作します。
Amazon EC2(および他のクラウドに配置されたホストが疑われる)からのアクセスを許可するために、Googleのスパマーとの終わりのない戦いに設定する別のフラグがあります: https://accounts.google.com/b/0/DisplayUnlockCaptcha