3

我想从服务器获得带有服务器状态(例如 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

谢谢。

4

2 回答 2

5

你不能。SMTP 不支持该行为。

于 2014-06-23T16:48:14.140 回答
4

sendmail这是成功发送时的正常行为。您可以在docsmtplib source中检查这一点。空字典作为响应意味着服务器接受并向每个收件人发送消息。

关于交货状态。SMPT 协议在此阶段根本无法保证消息将成功传递给收件人。这意味着第一台服务器可能会接受消息并将其推送,但下一个邮件跃点服务器可能会简单地丢弃它(当然,出于某些原因,第一台服务器可能会被告知这些原因,但没有有可能通知你所有这些东西)。

正如他们对电子邮件所说的那样——“发送消息很容易,但传递消息要困难得多”。

于 2011-12-15T11:18:22.897 回答