2009-08-21 11 views
3

Ich habe Probleme mit smtplib mein Programm zu binden, wenn E-Mail-Versand fehlschlägt, weil ein Timeout nie ausgelöst wird. Der Server, den ich benutze, hat keinen Python größer als 2.4, daher kann ich das Timeout-Argument für den SMTP-Konstruktor in späteren Versionen von Python nicht verwenden.Wie setze ich das Sendezeitlimit von smtplib in Python 2.4?

Python 2.4's docs zeigen, dass die SMTP-Klasse nicht das Argument 'Timeout' hat:

class SMTP([host[, port[, local_hostname]]]) 

So wie simulieren ich diese Funktion?

Antwort

6
import socket 
socket.setdefaulttimeout(120) 

wird jede Steckdose Zeit nach 2 Minuten machen, es sei denn die Timeout-spezifische Socket geändert wird (und ich glaube, SMTP in Python 2.4 nicht das letzteres tun).

bearbeiten: anscheinend pro OP Kommentar dies TLS bricht, so, Plan B ...:

Was smtplib Quelle ist über Grabbing 2.6 Datei und Zurückportieren es als Ihr eigenes Modul zu Ihrem 2.4? Sollte nicht allzu schwer sein ... und tut Unterstützung Timeout sauber! -)

here ansehen ...

+0

leider bricht starttls() Funktionalität. mein Code bleibt jetzt bei der smtp.ehlo() nach smtp.starttls() – Shabbyrobe

+0

OK, nächste versuchen dann - was ist mit 2.6s smtplib greifen und es als Ihr eigenes Modul zu Ihrem 2.4 zurückportieren? Sollte nicht zu schwer sein ... und unterstützt Timeout sauber! -) –

+0

Brilliant, arbeitete ein Vergnügen – Shabbyrobe