Как я могу отправить почту, используя скрипт Python?

Для этого я начал переходить по ссылке New to Python, ошибка GMail SMTP. И мой код

import smtplib

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

try:
    session = smptlib.SMTP('smtp.gmail.com',587)
    session.ehlo()
    session.starttls()
    session.ehlo()
    session.login(sender,'mypassword')
    session.sendmail(sender,receiver,message)
    session.quit()

except smtplib.SMTPException:
    print('Error')

Но я получаю следующую ошибку:

Traceback (most recent call last):
  File "email2.py", line 1, in <module>
    import smtplib
  File "/usr/lib/python2.7/smtplib.py", line 46, in <module>
    import email.utils
  File "/home/ramkrishna/test/email.py", line 17, in <module>
    except SMTPException:
NameError: name 'SMTPException' is not defined

2 ответа

Похоже, вы должны использовать полное имя (smtplib.SMTPException)

попробуйте переключить "кроме SMTPException:" с:

msgstr "кроме smtplib.SMTPException:"

session = smptlib.SMTP('smtp.gmail.com',587) должно быть session = smtplib.SMTP('smtp.gmail.com',587)

smptlib != smtplib

import smtplib

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

try:    
    session = smtplib.SMTP('smtp.gmail.com',587)
    session.ehlo()
    session.starttls()
    session.ehlo()
    session.login(sender,'mypassword')
    session.sendmail(sender,receiver,message)
    session.quit()

except smtplib.SMTPException:
    print('Error')

Код с исправленной орфографией работает нормально. Когда я меняюсь:

except smtplib.SMTPException: print('Error')

в

except smtplib.SMTPException as e:
    print(e)

Я получаю следующий вывод на python2 и python 3:

(535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 http://support.google.com/mail/bin/answer.py?answer=14257 ev18sm10203485wid.1 - gsmtp')
    File "/home/ramkrishna/test/email.py", line 17, in <module>
    except SMTPException:
NameError: name 'SMTPException' is not defined

из этого следа - я полагаю, вы пытались написать скрипт python с именем файла как email.py

когда вы это сделаете, этот email.py переопределяет библиотеки python email.py (с тем же именем), поскольку текущий каталог имеет приоритет над библиотекой python.

в конечном итоге вы могли изменить свое имя сценария на email2.py, однако вы уже пытались запустить email.py один раз, поэтому у вас должен быть email.pyc в указанной папке

File "/home/ramkrishna/test/email.py"

Если вы пробовали использовать другое имя файла в другой папке, это могло сработать, или вы могли бы переименовать свой email.py в sendMyEmail.py и не забудьте удалить файл.pyc.

вопрос старый. думал, что этот ответ может помочь кому-то новому.

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