Sim*_*lli 2 python smtp smtplib
最近我正在研究用于python的smtplib smtp客户端库,但我找不到任何对支持它的smtp服务器的PIPELINING协议的引用.有什么我想念的吗?它还没有实现?启用PIPELINING的任何其他实现而不是smtplib?
谢谢
有什么我想念的吗?
很可能.
简单地说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)
Run Code Online (Sandbox Code Playgroud)
最后更新
这是我可以追加"每个连接"的最大消息数量?
这在SMTP守护程序之间有所不同.Exim似乎默认为1000.
我是否必须同步执行此操作或smtplib最终处理当前的sendmail调用?
对sendmail方法的调用将阻塞直到完成,您的调用将是顺序的.
如果您需要并行化,那么您可能需要查看线程,多处理或扭曲.有许多可能的方法.
允许的并发连接数也可以是SMTP守护程序配置项.