Python新手入门,GMail SMTP错误

hsgswve4  于 2023-01-24  发布在  Python
关注(0)|答案(3)|浏览(102)

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

a0x5cqrl1#

在Python中,你需要用模块作为前缀来完全限定名称:

except smtplib.SMTPException:

这是真的,除非你专门导入非限定名(但我不建议你的程序这样做,只是说明什么是可能的):

from smtplib import SMTPException
monwx1rj

monwx1rj2#

那个拼写错误在我身上也发生过很多次!绕过这个"问题"的一个方法是使用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!')

祝你好运。

w8f9ii69

w8f9ii693#

从smtplib导入SMTP异常

排除smtplib. SMTP排除

相关问题