2010-12-30 10 views
1

Mein E-Mail-Skript basiert auf diesem Skript unter Fine Frog. Ich verwende dieses Skript, um HTML-Protokolldateien von einer Reihe von Remote-Computern mit einer Vielzahl von ISPs zu senden.Unregelmäßiges Verhalten bei E-Mail-Anhängen mit python smtplib

Der Anhang wird jedoch nicht konsistent gesendet. Es funktioniert 80% der Zeit, aber ich bekomme zwei Arten von seltsames Verhalten. Die erste ist, wo die E-Mail wird nicht gesendet, sondern führt den Fehler (n) siehe unten

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 

Oder auf einigen Maschinen dieser Fehler ausgelöst wird.

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') 

In der zweiten Instanz seltsamen Verhaltens wird die E-Mail ohne Fehler verarbeitet, geht die Befestigung entlang, aber einige Daten aus dem HTML-Anhang in dem E-Mailing-Prozess abgezogen. IOW, wenn Sie sich auf dem Remote-Computer anmelden, finden Sie die ursprüngliche Datei intakt, aber die angehängte Datei ist verpasste Protokolleinträge.

Ich vermute, dass diese Probleme unabhängig voneinander Probleme sind, aber hat jemand einige Tipps, wie Sie am zuverlässigsten HTML-Anhänge senden?

TIA,

Dave

Antwort

1

hatte ich ein Problem vor smtplib.SMTP verwenden und heraus den E-Mail-Server eine SSL-Verbindung erforderlich verwenden. Sie könnten versuchen, smtplib.SMTP_SSL zu verwenden, wenn der reguläre Aufruf fehlschlägt.

+1

Das erste Problem mit gab die smtplib.SMTPServerDisconnected: Server nicht verbunden oder socket.error: (104, 'Verbindung zurückgesetzt durch Peer') wurde durch den Wechsel zu Gmail als Mail-Server gelöst. Der zweite Fehler, bei dem ein Teil des HTML-Anhangs entfernt wurde, wurde korrigiert, indem die HTML-Datei "html_report.close()" vor der E-Mail geschlossen wurde. – Thinkwell

1

Das erste Problem, das einer der beiden folgenden Fehler erhöht:

smtplib.SMTPServerDisconnected: Server not connected 

oder

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

wurde gelöst, indem als Mail-Server zu Gmail wechseln.

Der zweite Fehler, wo ein Teil der HTML-Anlage wurde ... verarbeitet durch Schließen der Reportdatei vor dem E-Mail-Skript gelöst wurde gezupft

html_report.close() 

Ich bin ein Python-Neuling. : - |

Verwandte Themen