我写了一个简单的sendmail函数给自己,我不断得到这个错误:
名称错误:未定义名称'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')
3条答案
按热度按时间a0x5cqrl1#
在Python中,你需要用模块作为前缀来完全限定名称:
这是真的,除非你专门导入非限定名(但我不建议你的程序这样做,只是说明什么是可能的):
monwx1rj2#
那个拼写错误在我身上也发生过很多次!绕过这个"问题"的一个方法是使用yagmail。
玩笑归玩笑,我最近创建了yagmail,让发送电子邮件变得更容易。
例如:
这里使用了几种缩写,例如当
To
没有定义时,它会发送邮件到在服务器上注册的同一个邮箱,并且端口和主机是默认的,这使得它非常简洁。实际上,由于您似乎希望立即关闭连接,您甚至可以使用以下一行程序:
为了安全起见,你可以把你的密码保存在
keyring
中(参见文档),这样你就不必把你的个人密码保存在你的脚本中,这非常重要!它甚至会为你节省更多宝贵的屏幕空间。使用该软件包(默认为
@gmail.com
),您可以获得以下内容:祝你好运。
w8f9ii693#
从smtplib导入SMTP异常
排除smtplib. SMTP排除