如何查找Python send_message() 不工作的原因
我在一个Python脚本中调用了send_message()
这个函数,但不知道为什么它不工作。目前我的代码是这样的:
try:
print "sending message"
s.send_message(msg)
print "message sent"
except (SMTPRecipientRefused, SMTPHeloError, SMTPSenderRefused, SMTPDataError) as e:
print e
现在运行这个代码时,打印出了sending message
,但没有其他任何输出。没有出现异常的详细信息,而且message sent
也从来没有被打印出来。我该怎么找出send_message()
函数的问题呢?使用一个通用的异常处理器会有帮助吗?我试着找send_message()
返回的返回码或者布尔值,但什么都没找到。如果有什么建议可以帮助我找到问题所在,我会非常感激!
2 个回答
0
函数 send_message
没有 from_addr
和 to_addrs
这两个参数。它应该是这样的:
s.send_message(msg,from_addr=from,to_addrs=[to])
1
“消息打印”没有显示出来,因为 s.send_message()
是一个阻塞调用。换句话说,直到 send_message()
这个函数执行完毕,“消息已发送”才会打印出来。你可以在创建 SMTP 对象的时候设置一个超时时间(我假设你在使用这个库),这样当你的 send_message
失败时,你就可以捕捉到一个异常。不过在此期间,确保你的主机 IP 和端口是正确的。