Я пытаюсь отправить письмо (Gmail) с помощью python, но получаю следующую ошибку.
Traceback (most recent call last):
File "emailSend.py", line 14, in <module>
server.login(username,password)
File "/usr/lib/python2.5/smtplib.py", line 554, in login
raise SMTPException("SMTP AUTH extension not supported by server.")
smtplib.SMTPException: SMTP AUTH extension not supported by server.
Сценарий Python заключается в следующем.
import smtplib
fromaddr = 'user_me@gmail.com'
toaddrs = 'user_you@gmail.com'
msg = 'Why,Oh why!'
username = 'user_me@gmail.com'
password = 'pwd'
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Ответы:
Вы должны сказать,
EHLO
прежде чем просто столкнуться сSTARTTLS
:Кроме того, вы действительно должны создать
From:
,To:
иSubject:
заголовки сообщений, отделенный от тела сообщения пустой строкой и использования вCRLF
качестве маркеров EOL.Например
источник
EHLO
опечатку. После того, как я попробовал HELO много раз, но ответ был другим. Потребовались часы, чтобы понять, что EHLO на самом деле команда, которую понимает SMTP, и я сделал опечатку.Если вы хотите использовать порт 465, вам нужно создать
SMTP_SSL
объект:источник
Я столкнулся с подобной проблемой и наткнулся на этот вопрос. Я получил ошибку аутентификации SMTP, но мое имя пользователя / пароль были правильными. Вот что это исправило. Я прочитал это:
https://support.google.com/accounts/answer/6010255
Короче говоря, Google не позволяет вам войти через smtplib, поскольку он пометил этот тип входа как «менее безопасный», поэтому вам нужно перейти по этой ссылке, когда вы входите в свою учетную запись Google, и разрешить доступ:
https://www.google.com/settings/security/lesssecureapps
Как только это установлено (см. Мой скриншот ниже), оно должно работать.
Авторизация сейчас работает:
Ответ после изменения:
Предыдущий ответ:
Все еще не работает? Если вы все еще получаете SMTPAuthenticationError, но теперь код 534, это потому, что местоположение неизвестно. Перейдите по этой ссылке:
https://accounts.google.com/DisplayUnlockCaptcha
Нажмите «Продолжить», и это должно дать вам 10 минут для регистрации вашего нового приложения. Поэтому перейдите к следующей попытке входа в систему, и она должна работать.
ОБНОВЛЕНИЕ : Это, кажется, не работает сразу, вы можете застрять на некоторое время, получая эту ошибку в smptlib:
Сообщение говорит использовать браузер для входа:
После включения «lesssecureapps», попробуйте кофе, вернитесь и снова попробуйте ссылку «DisplayUnlockCaptcha». Из опыта пользователей может потребоваться до часа, чтобы изменения вступили в силу. Затем повторите попытку входа.
источник
Вы с ООП?
источник
Это работает
Создайте пароль приложения Gmail!
После того, как вы это создадите, создайте файл с именем
sendgmail.py
Затем добавьте этот код :
Так что, если вы добьетесь успеха, увидите изображение вот так:
Я проверил, отправив письмо от и до себя.
источник
Вы можете найти его здесь: http://jayrambhia.com/blog/send-emails-using-python
источник
Не имеет прямого отношения, но все же стоит отметить, что мой пакет пытается сделать отправку сообщений Gmail действительно быстрой и безболезненной. Он также пытается вести список ошибок и сразу же указывает на решение.
Буквально нужен только этот код, чтобы сделать именно то, что вы написали:
Или один вкладыш:
Для пакета / установки, пожалуйста, посмотрите на git или pip , доступные для Python 2 и 3.
источник
Вот пример Gmail API. Хотя это более сложный метод, это единственный метод, который я обнаружил в 2019 году. Этот пример был взят и изменен из:
https://developers.google.com/gmail/api/guides/sending
Вам нужно будет создать проект с интерфейсами API Google через их веб-сайт. Затем вам нужно включить GMAIL API для вашего приложения. Создайте учетные данные, а затем загрузите эти кредиты, сохраните их как credentials.json.
источник
Теперь есть API Gmail, который позволяет отправлять электронную почту, читать электронную почту и создавать черновики через REST. В отличие от вызовов SMTP, это неблокирование, что может быть полезно для потоковых веб-серверов, отправляющих электронную почту в потоке запросов (например, веб-серверы Python). API также довольно мощный.
Настроить проще всего, если у вас есть права администратора Служб Google в домене, потому что тогда вы можете дать полное разрешение своему клиенту. В противном случае вам придется использовать аутентификацию и разрешение OAuth.
Вот суть, демонстрирующая это:
https://gist.github.com/timrichardson/1154e29174926e462b7a
источник
отличный ответ от @David, здесь для Python 3 без общего try-кроме:
источник
Включите менее безопасные приложения в своей учетной записи gmail и используйте (Python> = 3.6):
источник
<{gmailUser}>
на<YourAlias>
.Похоже, проблема старого
smtplib
. Воpython2.7
всем работает нормально.Обновление : Да,
server.ehlo()
также может помочь.источник
источник
источник