Ошибка отправки электронной почты через SMTP-сервер на сервере разработки App Engine - PullRequest
13 голосов
/ 09 июня 2009

Я пытаюсь отправить электронное письмо, используя этот пример кода и следующие параметры командной строки:

dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=xxx@gmail.com--smtp_password=k1tt3ns myapp

Тем не менее, я получаю следующую ошибку, когда мое приложение пытается отправить электронную почту (на сервере разработки):

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 500, in __call__
    handler.post(*groups)
  File "C:\Documents and Settings\desk\Desktop\apps\temp\main.py", line 139, in post
    """)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 205, in send_mail
    message.send(make_sync_call)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail.py", line 474, in send
    make_sync_call('mail', self._API_CALL, message, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 68, in MakeSyncCall
    apiproxy.MakeSyncCall(service, call, request, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub_map.py", line 240, in MakeSyncCall
    stub.MakeSyncCall(service, call, request, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\apiproxy_stub.py", line 80, in MakeSyncCall
    method(request, response)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 203, in _Send
    self._SendSMTP(mime_message, smtp_lib)
  File "C:\Program Files\Google\google_appengine\google\appengine\api\mail_stub.py", line 133, in _SendSMTP
    smtp.login(self._smtp_user, self._smtp_password)
  File "C:\Python26\lib\smtplib.py", line 552, in login
    raise SMTPException("SMTP AUTH extension not supported by server.")
SMTPException: SMTP AUTH extension not supported by server.

Ответы [ 5 ]

18 голосов
/ 09 июня 2009

dev_appserver.py не поддерживает TLS, который требуется для Gmail. Вы можете включить его, добавив несколько строк в api / mail_stub.py:

# After smtp.connect(self._smtp_host, self._smtp_port)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()

Примечание! Это быстрое и грязное решение. Вы должны добавить какой-нибудь флаг, чтобы указать, хотите ли вы использовать TLS или нет, так как это не всегда желательно.

4 голосов
/ 25 ноября 2010

@ Raymond

Выполните следующую команду в Терминале:

find / -name "mail_stub.py" -type f 2>/dev/null

В моем случае возвращается:

/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/mail_stub.py
0 голосов
/ 14 января 2019

Для тех, кто ищет этот ответ в 2018 году или позже: этот обходной путь больше не нужен. Теперь вы можете использовать команду так, как ее написал оригинальный постер:

dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=xxx@gmail.com --smtp_password=yyy myapp
0 голосов
/ 26 февраля 2015

В учетной записи Google, используемой для отправки электронных писем из приложения, в https://security.google.com/settings.

должны быть отключены некоторые параметры безопасности.
  • Отключить доступ для менее защищенных приложений: Доступ к менее защищенным приложениям: включите

Если у вас по-прежнему возникают проблемы с аутентификацией, вам, возможно, придется просмотреть Устройства и активность по адресу https://security.google.com/settings/security/activity

0 голосов
/ 17 декабря 2014

Другие методы больше не нужны:

Настройка следующего в /appengine/api/mail_stub.py

if self._allow_tls and smtp.has_extn ('STARTTLS'):
  smtp.starttls ()

у меня работает на appengine sdk версия 1.9.15

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...