Python smtplib зависает при вызове sendmessage () - PullRequest
0 голосов
/ 08 февраля 2020

Я пытаюсь отправить сообщение из учетной записи Gmail, используя smtplib. Я возился с этим в оболочке, и все работает нормально, пока я не вызову sendmail (), когда он просто зависает, пока я не закрываю терминал. Никаких ошибок, просто зависание. Мои команды выглядят так:

>>> import smtplib
>>> connection = smtplib.SMTP("smtp.gmail.com", 587)
>>> connection.ehlo()
>>> connection.starttls()
>>> connection.login("gmail_id", "gmail_pwd")
>>> connection.sendmail("addr_from", "addr_to", "message")

Кто-нибудь имел эту проблему? Я попытался пропинговать smtp.gmail.com и использовать te lnet smtp.gmail.com 587, и они оба подключились.

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

У меня была похожая проблема только сейчас, я пытался войти в свою учетную запись Gmail, используя python3 .7's smtplib и получал:

smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials')

Я пошел на свой почтовый ящик gmail через браузер увидел, что я получил электронное письмо с предупреждением системы безопасности с сообщением

Менее защищенное приложение заблокировано: Google заблокировал приложение, которое вы пытались использовать, поскольку оно не отвечает нашей безопасности Стандарты. Некоторые приложения и устройства используют менее безопасную технологию входа, что делает вашу учетную запись более уязвимой. Вы можете отключить доступ к этим приложениям, которые мы рекомендуем, или включить доступ, если вы хотите использовать их, несмотря на риски. Google автоматически отключит этот параметр, если он не используется.

После того, как я следовал инструкциям в вышеупомянутом письме и включил менее защищенный доступ к приложениям в моей учетной записи gmail, я попытался sendmail, все еще используя начальное SMTP-соединение, но оно просто зависало без вывода.

Затем я продолжил выходить из начального SMTP-соединения и создал новое (пост-менее защищенные приложения включены), как показано ниже, и оно заработало!

conn = smtplib.SMTP('smtp.gmail.com', 587)
0 голосов
/ 08 февраля 2020

Используйте connection.set_debuglevel(1) для включения отслеживания / отладки SMTP-сессии.

https://docs.python.org/2/library/smtplib.html#smtplib .SMTP.set_debuglevel

...