最近、Python 用の smtplib smtp クライアント ライブラリを勉強していますが、それをサポートする smtp サーバーに対する PIPELINING プロトコルへの参照が見つかりませんでした。足りないものはありますか?もしかしてまだ実装されてない?PIPELINING を有効にした smtplib 以外の実装はありますか?
ありがとう
足りないものはありますか?
かなり可能性があります。
簡単に言えば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 デーモンの構成項目である場合もあります。