2

最近、Python 用の smtplib smtp クライアント ライブラリを勉強していますが、それをサポートする smtp サーバーに対する PIPELINING プロトコルへの参照が見つかりませんでした。足りないものはありますか?もしかしてまだ実装されてない?PIPELINING を有効にした smtplib 以外の実装はありますか?

ありがとう

4

1 に答える 1

6

足りないものはありますか?

かなり可能性があります。

簡単に言えばPIPELINING、応答を待たずに SMTP コマンドを送信することです。利点はわずかであり、エラー状態の複雑さが増すため、実装される傾向はありません。

あなたのコメントから、1 つの接続で 1 つのメッセージしか送信されないことを心配しているように聞こえます。これは違いPIPELININGます。

smtplib複数のメッセージに同じ接続を使用することをサポートします。sendmail何回でも電話できます。例えば

s = smtplib.SMTP("localhost")
s.sendmail("foo@bar.baz",["bar@foo.baz"],message1)
s.sendmail("foo@bar.baz",["baz@foo.baz"],message2)

最終更新

「接続ごと」に追加できるメッセージの最大数はどれですか?

これは、SMTP デーモンによって異なります。Exim のデフォルトは 1000 のようです。

これを同期的に行う必要がありますか、それとも smtplib は最終的に現代の sendmail 呼び出しを処理しますか?

メソッドの呼び出しsendmailは完了するまでブロックされ、呼び出しは順次になります。

並列化する必要がある場合は、スレッド化、マルチプロセッシング、またはツイストを検討する必要があります。多くの可能なアプローチがあります。

許可される同時接続の数は、SMTP デーモンの構成項目である場合もあります。

于 2010-09-14T12:30:02.240 に答える