最近我正在研究用於python的smtplib smtp客戶端庫,但是我找不到任何對支持它的smtp服務器的PIPELINING協議的引用。 有什麼我失蹤?它可能還沒有實現?任何其他實現,而不是啓用了PIPELINING的smtplib?Python smtplib和每個連接的多個消息
感謝
最近我正在研究用於python的smtplib smtp客戶端庫,但是我找不到任何對支持它的smtp服務器的PIPELINING協議的引用。 有什麼我失蹤?它可能還沒有實現?任何其他實現,而不是啓用了PIPELINING的smtplib?Python smtplib和每個連接的多個消息
感謝
有我丟失的東西?
很可能。
簡單地說,PIPELINING
正在發送SMTP命令而不等待響應。它並不傾向於實施,因爲它的好處很少,而且會增加錯誤狀態的複雜性。
從您的評論,它聽起來好像你擔心只有一封郵件將通過一個連接發送。這不是PIPELINING
。
smtplib
支持對多條消息使用相同的連接。您可以多次撥打sendmail
。例如。
s = smtplib.SMTP("localhost")
s.sendmail("[email protected]",["[email protected]"],message1)
s.sendmail("[email protected]",["[email protected]"],message2)
最後更新
這是消息的最大數i可以附加 「每個連接」?
這在SMTP守護進程之間有所不同。 Exim似乎默認爲1000.
我是否必須同步執行此操作還是smtplib最終會處理當前的sendmail調用?
對sendmail
方法的調用將阻塞,直到完成,您的調用將按順序進行。
如果你需要並行化,那麼你可能需要看看線程,多處理或可能扭曲。有許多可能的方法。
允許的併發連接數也可能是SMTP守護程序配置項。
我不知道,謝謝:) – 2010-09-14 12:32:13
非常歡迎! – MattH 2010-09-14 13:00:25
最後兩件事,我可以附加「每個連接」的最大數量的消息?而且,我是否必須同步執行此操作,還是smtplib最終能夠處理當前的sendmail調用? – 2010-09-14 13:02:02
你爲什麼要'流水'? – MattH 2010-09-14 11:30:47
我正在寫一個應用程序需要通過我的smtp服務器發送大量的電子郵件,我想避免1:1連接超載服務器本身。 – 2010-09-14 11:53:54
所以你的擔心是使用相同的連接多個消息? – MattH 2010-09-14 12:14:33