Python smtplib与每个连接发送多个消息
最近我在学习Python的smtplib这个SMTP客户端库,但我找不到关于支持PIPELINING协议的SMTP服务器的相关资料。
我是不是漏掉了什么?这个功能可能还没有实现吗?有没有其他的库支持PIPELINING?
谢谢
1 个回答
7
我是不是漏掉了什么?
很可能是的。
简单来说,PIPELINING
就是发送SMTP命令时不等待回应。这个功能通常不被实现,因为它的好处不大,而且会增加错误处理的复杂性。
从你的评论来看,你似乎担心每个连接只能发送一条消息。其实这不是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服务程序的配置项。