1

为此,我开始关注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
4

3 回答 3

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')
于 2014-07-29T10:37:50.340 回答
1

看起来您必须使用全名 (smtplib.SMTPException)

尝试切换“除了 SMTPException:”:

“除了 smtplib.SMTPException:”

于 2014-07-29T10:17:15.807 回答
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 库 email.py(同名)——因为当前目录优先于 python 库。

最终,您可能已将脚本名称更改为 email2.py,但是您已经尝试运行 email.py 一次,因此您必须在提到的文件夹中有一个 email.pyc

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

如果您在不同的文件夹中尝试了不同的文件名,它可能会起作用,或者您可以将 email.py 重命名为 sendMyEmail.py 并确保您也删除了 .pyc 文件。

这个问题是一个老问题。认为这个答案可以帮助一些新的。

于 2019-12-05T20:46:13.617 回答