そこで、フラスコアプリを作成しましたが、ローカルで実行するとうまく機能しました。次に、それを AWS EC2 インスタンスにプッシュしました。インスタンスから実行すると、メールが送信されなくなりました。それは私のデータベースに追加され、次の行は電子メールを送信することでした. そこが失敗だった。Google がデバイスをブロックしていたということでした。その後、そのデバイスを許可することができ、すべて正常に機能していました。
早送りして、エラスティック IP を追加し、それを自分のドメインにリンクしましたが、再び機能しなくなりました。それはまだデータベースに追加されているので、Googleがアプリケーションを機能させていないことが問題だと思います。これを解決する方法はわかりませんが、しばらくの間これに取り組んできました。これは、インスタンスで取得したエラー コードです。
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "FlaskApp.py", line 130, in register
mail.send(msg)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 492, in send
message.send(connection)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 427, in send
connection.send(self)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 178, in send
"The message does not specify a sender and a default sender "
AssertionError: The message does not specify a sender and a default sender has not been configured
私のウェブサイトでは、「500 Internal Server Error」というタブが表示され、ウェブサイトには次のように表示されます。
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
誰かがこれを理解するのを手伝ってくれますか? フラスコ アプリを使用してメールを再度送信できるようにしたいと考えています。私はこれが初めてなので、Googleアカウントへのアクセスが拒否されているため、私のロジックはすべてだと言っています. しかし、EC2 インスタンスへのアクセスを許可するためのリンクや何かが見つかりません。私もこれを使用しようとしました: https://accounts.google.com/DisplayUnlockCaptchaしかし、それも機能しません。
更新: 以前は機能していましたが、ソースコードは何も変更していません。以下を参照してください:
FROM_EMAIL = os.environ.get('EMAIL_USERNAME')
app.config.update(
DEBUG = False,
MAIL_SERVER = 'smtp.gmail.com',
MAIL_PORT = 465,
MAIL_USE_SSL = True,
MAIL_USERNAME = FROM_EMAIL,
MAIL_PASSWORD = os.environ.get('EMAIL_PASSWORD_TOKEN'),
)
mail = Mail(app)
そして、私が呼び出すときは次を使用します:
msg = Message("Welcome",
sender = FROM_EMAIL,
recipients = [request.form["email"]])
msg.body = "Welcome! \n\n Congratulations on your sucessful registration."
mail.send(msg)
更新 #2: 理由はわかりませんが、デフォルトの送信者を追加する必要があり、それは機能しましたが、まだメールを送信できません。次のエラーが表示されます。
[2019-01-22 01:40:44,973] ERROR in app: Exception on /register/ [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "FlaskApp.py", line 131, in register
mail.send(msg)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 492, in send
message.send(connection)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 427, in send
connection.send(self)
File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 192, in send
message.rcpt_options)
File "/usr/lib64/python2.7/smtplib.py", line 737, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
SMTPSenderRefused: (530, '5.5.1 Authentication Required. Learn more at\n5.5.1 https://support.google.com/mail/?p=WantAuthError d21sm19653189pfo.162 - gsmtp', u'myemail@gmail.com')
199.169.1.69 - - [22/Jan/2019 01:40:44] "POST /register/ HTTP/1.1" 500 -
知っておくと役立つかどうかはわかりませんが、インスタンスから SMTP コマンドを使用して gmail にログインできますが、それでもエラーが発生します。ここにある指示に従いました: How to send email using simple SMTP commands via Gmail?