2009-08-21 27 views
3

タイムアウトが発生しないため、電子メールの送信が失敗したときにsmtplibがプログラムを終了する際に問題が発生します。私が使用しているサーバーは、2.4より大きいPythonを持っていないので、pythonの後のバージョンでSMTPコンストラクターにタイムアウト引数を使用することはできません。python 2.4でsmtplib送信タイムアウトを設定するには?

Python 2.4'sドキュメントは、SMTPクラスは「タイムアウト」引数を持っていないことを示しています

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

それでは、どのように私はこの機能をシミュレートしていますか?特定のソケットのタイムアウトが変更されない限り

答えて

6
import socket 
socket.setdefaulttimeout(120) 

は、2分後に任意のソケットタイムアウトを行います(と私は後者をしないのPython 2.4でSMTPを信じています)。

編集:どうやらOPさんのコメントにつき、これはTLSを壊すので、プランB ...:

何2.6のたりするsmtplibソースファイルをつかみ、あなたの2.4に独自のモジュールとしてそれをバックポートについてはどうですか? TOO難しいこと...ときれいに支援のタイムアウトをしてはならない - !)

here ...

+0

が、残念ながらこれはSTARTTLS()の機能を壊し参照してください。私のコードは今smtp.starttls()の後にsmtp.ehlo()で固まってしまいます。 – Shabbyrobe

+0

OK、次に、2.6のsmtplibをつかんで2.4にあなたのモジュールとしてバックポートするのはどうですか?あまりにも厳しくはありません...そしてタイムアウトをきれいにサポートします! - ) –

+0

華麗で、 – Shabbyrobe

関連する問題