2011-12-15 3 views
3

Я хочу получить ответ от сервера с состоянием сервера (например, 200, 500), который говорит, что если сообщение было доставлено. Как это сделать?Как получить ответ с сервера после отправки по электронной почте?

>> s = smtplib.SMTP('...') 
>> resp = s.sendmail('[email protected]', '[email protected]', 'message') 
>> print resp 
{} 
>> resp = s.sendmail('[email protected]', '[email protected]', 'message') 
>> print resp 
{} 
>> resp = s.sendmail('[email protected]', '[email protected]', 'message') 
>> print resp 
{} 

его

Спасибо.

ответ

4

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

4

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

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

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

+0

Yup, я попытался с set_debuglevel (1) и увидел, что сервер принимает все адреса. Но когда я вызываю метод getreply() на объект сервера после отправки сообщения электронной почты, сервер висит o_O – User

Смежные вопросы