2010-12-30 5 views
1

Мой сценарий электронной почты основан на этом скрипте на Fine Frog. Я использую этот скрипт для отправки файлов журнала HTML с нескольких удаленных компьютеров с использованием различных интернет-провайдеров.Ошибочное поведение с вложениями электронной почты с использованием python smtplib

Вложение не отправляется последовательно. Он работает 80% времени, но я получаю два типа странного поведения. Во-первых, где электронная почта не отправляется на всех, но бросает ошибку (ы), который вы видите ниже

Traceback (most recent call last): 


File "/root/sapapps/reporter/usage_report.py", line 336, in ? 
    se.send_mail(['[email protected]'], cd.contact, '[email protected]', report_subject, text_body, files=[report_name], bcc=[cd.tech_email]) 
    File "/usr/lib/python2.4/site-packages/sap/send_email.py", line 61, in send_mail 
    mail_server.sendmail(server_addr, addresses, message.as_string()) 
    File "/usr/lib/python2.4/smtplib.py", line 692, in sendmail 
    (code,resp) = self.data(msg) 
    File "/usr/lib/python2.4/smtplib.py", line 489, in data 
    self.send(q) 
    File "/usr/lib/python2.4/smtplib.py", line 319, in send 
    raise SMTPServerDisconnected('Server not connected') 
smtplib.SMTPServerDisconnected: Server not connected 

Или, на некоторых машинах, возникает эта ошибка.

reply: '421 Command timeout, closing transmission channel\r\n' 
reply: retcode (421); Msg: Command timeout, closing transmission channel 
data: (421, 'Command timeout, closing transmission channel') 
send: 'rset\r\n' 
Traceback (most recent call last): 
    File "/root/sapapps/reporter/usage_report.py", line 336, in ? 
    se.send_mail(['[email protected]'], cd.contact, '[email protected]', report_subject, text_body, files=[report_name], bcc=[cd.tech_email]) 
    File "/usr/lib/python2.4/site-packages/sap/send_email.py", line 61, in send_mail 
    mail_server.sendmail(server_addr, addresses, message.as_string()) 
    File "/usr/lib/python2.4/smtplib.py", line 694, in sendmail 
    self.rset() 
    File "/usr/lib/python2.4/smtplib.py", line 449, in rset 
    return self.docmd("rset") 
    File "/usr/lib/python2.4/smtplib.py", line 374, in docmd 
    return self.getreply() 
    File "/usr/lib/python2.4/smtplib.py", line 348, in getreply 
    line = self.file.readline() 
    File "/usr/lib/python2.4/socket.py", line 340, in readline 
    data = self._sock.recv(self._rbufsize) 
socket.error: (104, 'Connection reset by peer') 

Во втором случае из странного поведения, электронная почта обрабатываются без ошибок, прикрепление идет вперед, но некоторые данные удаляются из вложения HTML в процессе отправки по электронной почте. IOW, если вы входите в систему на удаленном компьютере, вы найдете исходный файл неповрежденным, но в прикрепленном файле пропущены записи журнала.

Я предполагаю, что эти проблемы связаны между собой, но есть ли у кого-нибудь советы о том, как наиболее надежно отправлять вложения HTML?

ТИА,

Dave

ответ

1

У меня была проблема перед использованием smtplib.SMTP, и выяснили, сервер электронной почты, необходимое с помощью соединения SSL. Вы можете попробовать использовать smtplib.SMTP_SSL, если обычный вызов завершается с ошибкой.

+1

Первая проблема с сообщением smtplib.SMTPServerDisconnected: Сервер не подключен или socket.error: (104, «Сброс соединения с помощью peer») был разрешен путем переключения на Gmail в качестве почтового сервера. Вторая ошибка, когда часть вложения HTML была удалена, была исправлена, закрыв файл HTML «html_report.close()» перед отправкой по электронной почте. – Thinkwell

1

Первая проблема, которая поднял одну из двух следующих ошибок:

smtplib.SMTPServerDisconnected: Server not connected 

или

socket.error: (104, 'Connection reset by peer') 

была решена за счет перехода на Gmail в качестве почтового сервера.

Вторая ошибка, когда часть вложений HTML был раздели была решена путем закрытия файла отчета перед сценарием электронной почты переработанного ...

html_report.close() 

Я Python новичку. : - |

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