如何查找Python send_message() 不工作的原因

0 投票
2 回答
616 浏览
提问于 2025-04-18 14:56

我在一个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_addrto_addrs 这两个参数。它应该是这样的:

s.send_message(msg,from_addr=from,to_addrs=[to])
1

“消息打印”没有显示出来,因为 s.send_message() 是一个阻塞调用。换句话说,直到 send_message() 这个函数执行完毕,“消息已发送”才会打印出来。你可以在创建 SMTP 对象的时候设置一个超时时间(我假设你在使用这个库),这样当你的 send_message 失败时,你就可以捕捉到一个异常。不过在此期间,确保你的主机 IP 和端口是正确的。

撰写回答