Новое в Python, ошибка SMTP в GMail

Я пишу простую функцию sendmail для себя, и я продолжаю получать эту ошибку:

NameError: имя 'SMTPException' не определено

Что не так с моим кодом? Какие-либо предложения?

import smtplib

sender = "user@gmail.com"
receiver = ["user@gmail.com"]
message = "Hello!"

try:
    session = smptlib.SMTP('smtp.gmail.com',587)
    session.ehlo()
    session.starttls()
    session.ehlo()
    session.login(sender,'password')
    session.sendmail(sender,receiver,message)
    session.quit()
except SMTPException:
    print('Error')

3 ответа

Решение

В Python вам нужно будет полностью указать имя, добавив к нему префикс:

except smtplib.SMTPException:

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

from smtplib import SMTPException

Эта орфографическая ошибка случалась и со мной много раз! Одним из способов обойти эту "проблему" является использование yagmail.

Помимо шуток, я недавно создал yagmail, чтобы упростить отправку писем.

Например:

import yagmail
yag = yagmail.SMTP('user@gmail.com', 'password')
yag.send(contents = "Hello!")

Здесь используется несколько сокращений, например, когда To не определено, будет отправлено письмо на тот же адрес электронной почты, который зарегистрирован на сервере. Также порт и хост по умолчанию, что делает его очень кратким.

Фактически, поскольку кажется, что вы хотите немедленно закрыть соединение, вы можете даже использовать эту однострочную строку:

yagmail.SMTP('user@gmail.com', 'password').send(contents = "Hello!")

В целях безопасности вы можете сохранить свой пароль в keyring (см. документацию), так что вам не нужно хранить свой личный пароль в своих скриптах, очень важно! Это даже сэкономит вам больше драгоценного экрана.

Идя олл-ин с пакетом (@gmail.com по умолчанию), вы можете получить следующее:

yagmail.SMTP('user').send('', 'Hello!')

Удачи.

из smtplib импортировать SMTPExeption


exep smtplib.SMTPExeption

Другие вопросы по тегам