2010-12-30 8 views
1

私の電子メールスクリプトはFine Frogでこのスクリプトに基づいています。私はこのスクリプトを使用して、さまざまなISPを使用している多数のリモートマシンからHTMLログファイルを送信しています。python smtplibを使用した電子メール添付ファイルの不安定な動作

添付ファイルが一貫して送信されていません。それは時間の80%で動作しますが、私は奇妙なふたつの種類があります。最初は、このエラーが発生し、電子メールは一切送信されない場合であるが、エラー(S)あなたには、いくつかのマシンで、

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 

の下に参照するかをスローします。奇妙な行動の2番目のインスタンスで

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添付ファイルの一部が削除された2番目のエラーは、電子メールの前にHTMLファイル "html_report.close()"を閉じることによって修正されました。 – Thinkwell

1

2次のエラーの1つの隆起最初の問題:

smtplib.SMTPServerDisconnected: Server not connected 

又は

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

をメールサーバとしてGmailに切り替えることによって解決されました。

HTML添付ファイルの一部が取り除かれた2番目のエラーが...処理された電子メールのスクリプトの前にレポートファイルを閉じることで

html_report.close() 

を解決した私は、Pythonの初心者です。 : - |

関連する問題