1

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

ただし、添付ファイルは一貫して送信されていません。80% の確率で動作しますが、2 種類の奇妙な動作が発生します。1 つ目は、メールがまったく送信されない場所ですが、以下に表示されるエラーがスローされます。

Traceback (most recent call last):


File "/root/sapapps/reporter/usage_report.py", line 336, in ?
    se.send_mail(['thinkwelldesigns@g1234.com'], cd.contact, 'dave@1234.com', 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(['thinkwelldesigns@1234.com'], cd.contact, 'dave@1234.com', 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')

奇妙な動作の 2 番目の例では、電子メールはエラーなしで処理され、添付ファイルは処理されますが、電子メール送信プロセスで一部のデータが HTML 添付ファイルから取り除かれます。リモート マシンにログインすると、元のファイルはそのままですが、添付ファイルのログ エントリが失われています。

これらの問題は無関係の問題であると推測していますが、HTML 添付ファイルを最も確実に送信する方法について誰かアドバイスはありますか?

ティア、

デイブ

4

2 に答える 2

1

smtplib.SMTPを使用する前に問題が発生し、SSL接続を使用して必要な電子メールサーバーを見つけました。通常の呼び出しが失敗した場合は、smtplib.SMTP_SSLを使用してみてください。

于 2010-12-30T03:26:25.013 に答える
1

次の 2 つのエラーのいずれかを引き起こした最初の問題:

smtplib.SMTPServerDisconnected: Server not connected 

また

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

メールサーバーをGmailに切り替えることで解決しました。

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

html_report.close()

私はPythonの初心者です。:-|

于 2010-12-30T18:15:51.050 に答える