新的Python,GMail的SMTP错误(New to Python, GMail SMTP er

2019-08-02 01:58发布

我写一个简单的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')

Answer 1:

在Python中,你需要用它的模块前缀是完全限定的名称:

except smtplib.SMTPException:

除非您特别导入不合格的名称(但我不建议这样做,你的程序,只是显示什么是可能的),这是真实的:

from smtplib import SMTPException


Answer 2:

这拼写错误发生多次给我的! 绕过这个“问题”的一种方式,是使用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!')

祝好运。



文章来源: New to Python, GMail SMTP error