Python smtplib和每个连接多个消息

时间:2010-09-14 10:17:14

标签: python smtp smtplib

最近我正在研究用于python的smtplib smtp客户端库,但是我找不到对支持它的smtp服务器的PIPELINING协议的任何引用。 有什么我想念的吗?它还没有实现?启用PIPELINING的任何其他实现而不是smtplib?

由于

1 个答案:

答案 0 :(得分:6)

  

有什么东西我不见了吗?

很可能。

简单地说PIPELINING正在发送SMTP命令而不等待响应。它并不倾向于实现,因为它的好处是微不足道的,并且增加了错误状态的复杂性。

从您的评论中,听起来好像您担心只有一条消息将通过一个连接发送。这不是PIPELINING

smtplib支持对多条消息使用相同的连接。您可以多次拨打sendmail。 E.g。

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守护程序配置项。