2010-12-30 4 views
1

전자 메일 스크립트는 Fine Frog에이 스크립트를 기반으로합니다. 이 스크립트를 사용하여 다양한 ISP를 사용하는 여러 원격 시스템에서 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 첨부 파일을 가장 안정적으로 보내는 방법에 대한 조언을 갖고 있습니까?

TIA,

데이브

답변

1

나는 smtplib.SMTP를 사용하기 전에 문제가 있고, SSL 연결을 사용하여 필요한 이메일 서버를 알아 냈어. 일반 호출이 실패하면 smtplib.SMTP_SSL을 사용해 볼 수 있습니다. 다음 두 오류 중 하나가 발생

+1

첫 번째 문제는 smtplib.SMTPServerDisconnected : 서버가 연결되지 않았거나 socket.error : (104, 'Connection reset by 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() 

나는 파이썬 초보자입니다. : - |

관련 문제