2009-08-21 10 views
3

Je rencontre des problèmes avec smtplib liant mon programme lorsque l'envoi d'email échoue, car un timeout n'est jamais déclenché. Le serveur que j'utilise n'a pas et n'aura jamais python supérieur à 2.4, donc je ne peux pas utiliser l'argument timeout pour le constructeur SMTP dans les versions ultérieures de python.Comment définir le délai d'expiration de smtplib en python 2.4?

Python 2.4's docs montrent que la classe SMTP ne pas l'argument de la 'délai d'attente':

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

Alors, comment puis-je simuler cette fonctionnalité?

Répondre

6
import socket 
socket.setdefaulttimeout(120) 

fera tout moment de la prise après 2 minutes, à moins que le délai d'attente de prise spécifique est changé (et je crois que SMTP en Python 2.4 ne fait pas ce dernier).

Modifier: apparemment par le commentaire de l'OP ce casse TLS, donc, le plan B ...:

Qu'en est-il saisir le fichier de 2.6 source smtplib et rétroportage comme votre propre module à votre 2.4? Ne devrait pas être trop dur ... et ne délai d'attente de soutien proprement -)

Voir here ...

+0

malheureusement cette fonctionnalité casse starttls(). mon code est maintenant bloqué sur le smtp.ehlo() après smtp.starttls() – Shabbyrobe

+0

OK, essayez ensuite - et saisissez smtplib de 2.6 et le backporting comme votre propre module à votre 2.4? Ne devrait pas être trop dur ... et supporte le timeout proprement! -) –

+0

Brillant, a travaillé un festin – Shabbyrobe