为此,我开始关注链接New to Python, GMail SMTP error。我的代码是
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
答案 0 :(得分:1)
看起来您必须使用全名(smtplib.SMTPException)
尝试切换&#34;除了SMTPException:&#34;用:
&#34;除了smtplib.SMTPException:&#34;
答案 1 :(得分:1)
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')
答案 2 :(得分:0)
File "/home/ramkrishna/test/email.py", line 17, in <module>
except SMTPException:
NameError: name 'SMTPException' is not defined
从此跟踪中获取-我想您尝试编写一个文件名为email.py的python脚本
当您这样做时,此email.py会覆盖python库(具有相同的名称)-因为当前目录的优先级高于python库。
最终,您可能已将脚本名称更改为email2.py,但是您已经尝试运行过一次email.py,因此您在上述文件夹中必须有一个email.pyc
File "/home/ramkrishna/test/email.py"
如果您在其他文件夹中尝试过其他文件名,则可能有效 或者您也可以将email.py重命名为sendMyEmail.py并确保也删除了.pyc文件。
这个问题是一个古老的问题。认为这个答案可以帮助一些新人。