3

タイムアウトが発生しないため、メール送信が失敗したときに smtplib がプログラムを拘束することに問題があります。私が使用しているサーバーには 2.4 を超える python はありませんし、今後もありません。そのため、以降のバージョンの python では SMTP コンストラクターへのタイムアウト引数を使用できません。

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

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

では、この機能をシミュレートするにはどうすればよいでしょうか。

4

1 に答える 1

6
import socket
socket.setdefaulttimeout(120)

特定のソケットのタイムアウトが変更されない限り、2分後にソケットがタイムアウトします(Python 2.4のSMTPは後者を実行しないと思います)。

編集:明らかにOPのコメントによると、これはTLSを壊すので、プランB ...:

2.6のsmtplibソースファイルを取得し、それを独自のモジュールとして2.4にバックポートするのはどうですか?難しすぎるべきではありません...そしてタイムアウトをきれいにサポートします!-)

ここを参照してください...

于 2009-08-21T03:55:40.537 に答える