Итак, я создал приложение для колб, и оно отлично работало, когда я запускал его локально. Затем я отправил его в свой экземпляр 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, но это тоже не работает.
UPDATE:
Он работал раньше, и я ничего не изменил в своем исходном коде, см. Ниже:
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 -
Не уверен, полезно ли это знать или нет, но я могу войти в gmail, используя SMTP-команды из экземпляра, но я все еще получаю сообщение об ошибке. Я следовал инструкциям, найденным здесь: Как отправить электронную почту, используя простые команды SMTP через Gmail?