我写一个简单的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')
在Python中,你需要用它的模块前缀是完全限定的名称:
except smtplib.SMTPException:
除非您特别导入不合格的名称(但我不建议这样做,你的程序,只是显示什么是可能的),这是真实的:
from smtplib import SMTPException
这拼写错误发生多次给我的! 绕过这个“问题”的一种方式,是使用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!')
祝好运。