Python新手,GMail SMTP错误
我正在为自己编写一个简单的sendmail函数,我不断遇到以下错误: NameError:未定义名称“SMTPException” 我的代码有什么问题?有什么建议吗Python新手,GMail SMTP错误,python,smtp,gmail,smtplib,Python,Smtp,Gmail,Smtplib,我正在为自己编写一个简单的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()
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:
除非您专门导入非限定名称,否则这是正确的(但我不建议您的程序这样做,只是显示可能的情况):
这个拼写错误在我身上也发生过很多次!规避这个“问题”的一个方法是使用 撇开玩笑不谈,我最近创建了yagmail,使发送电子邮件更容易 例如:
import yagmail
yag = yagmail.SMTP('user@gmail.com', 'password')
yag.send(contents = "Hello!")
它在这里使用了几个缩写,例如,如果未定义To
,它将向在服务器上注册的同一电子邮件发送邮件。端口和主机也是默认的,这使得它非常简洁
事实上,由于您似乎想立即关闭连接,因此您甚至可以使用以下一种方式:
yagmail.SMTP('user@gmail.com', 'password').send(contents = "Hello!")
为了安全起见,您可以将密码保存在钥匙圈中(请参阅文档),这样您就不必将个人密码保存在脚本中,这一点非常重要!它甚至可以为你节省更多宝贵的屏幕资源
完全使用该软件包(@gmail.com
是默认设置),您可以通过以下方式摆脱困境:
yagmail.SMTP('user').send('', 'Hello!')
祝你好运。不用担心,即使在SMTP上工作了20年,我仍然会这么做。@sureshvv谢谢:)希望这对你有好处。smptlib->smtplib
yagmail.SMTP('user').send('', 'Hello!')