Как получить ответ от сервера после отправки электронного письма? - PullRequest
3 голосов
/ 15 декабря 2011

Я хочу получить ответ от сервера со статусом сервера (например, 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
{}

о_О

Спасибо.

Ответы [ 2 ]

5 голосов
/ 23 июня 2014

Вы не можете.SMTP не поддерживает такое поведение.

4 голосов
/ 15 декабря 2011

Это нормальное поведение sendmail в случае успешной отправки.Вы можете проверить это как в doc , так и в smtp lib source .Пустой словарь в качестве ответа означает, что сервер принял и отправил сообщение каждому из получателей.

Относительно статуса доставки.Протокол SMPT просто не может гарантировать на этом этапе, что сообщение будет успешно доставлено получателю.Это означает, что первый сервер может принять сообщение и отправить его вперед, но один из следующих почтовых серверов может просто отбросить его (по некоторым причинам, конечно, и первый сервер, вероятно, будет проинформирован об этих причинах, но нетвозможность проинформировать вас обо всем этом).

Как говорится о рассылке по электронной почте: «Отправить сообщение легко, но доставить его гораздо сложнее».

...