如何使用python脚本发送邮件?

时间:2014-07-29 10:12:43

标签: python email smtp ssmtp

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

3 个答案:

答案 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文件。

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