Новое в 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