如何在发送邮件后获取服务器响应?

3 投票
2 回答
4416 浏览
提问于 2025-04-17 08:25

我想从服务器那里获取一个响应,里面包含服务器的状态码(比如200、500),这样我就能知道消息是否成功发送了。请问我该怎么做呢?

>> s = smtplib.SMTP('...')
>> resp = s.sendmail('me@me.com', 'exist@email.com', 'message')
>> print resp
{}
>> resp = s.sendmail('me@me.com', 'does-not-exist-email@email.com', 'message')
>> print resp
{}
>> resp = s.sendmail('me@me.com', 'does-not-exist-domain@email000.com', 'message')
>> print resp
{}

o_O

谢谢。

2 个回答

4

这是sendmail在成功发送时的正常表现。你可以在文档smtp库的源代码中查看到这一点。返回一个空字典意味着服务器已经接受并将消息发送给每一个收件人。

关于投递状态,SMTP协议在这个阶段无法保证消息会成功送达收件人。这意味着第一个服务器可能会接受消息并继续转发,但后面的某个邮件中转服务器可能会因为某些原因直接丢弃这条消息(当然,第一台服务器可能会被告知这些原因,但没有办法通知你所有这些情况)。

人们常说发邮件的道理是:“发消息很简单,但送达却要难得多。”

5

你不能这样做。SMTP(简单邮件传输协议)不支持这种行为。

撰写回答