Python smtplib 和每个连接的多条消息

标签 python smtp smtplib

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

谢谢

最佳答案

Is there something i'm missing?

很有可能。

简单地说,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)

最后更新

which is the max number of messages i can append "per-connection" ?

这因 SMTP 守护进程而异。 Exim 似乎默认为 1000。

do i have to do this synchronously or does smtplib eventually handle contemporary sendmail calls ?

sendmail 方法的调用将阻塞直到完成,您的调用将是连续的。

如果您需要并行化,那么您可能需要考虑线程、多处理或扭曲。有许多可能的方法。

您允许的并发连接数也可能是一个 SMTP 守护进程配置项。

关于Python smtplib 和每个连接的多条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3707945/

相关文章:

java - 使用java程序通过smtp和ssl发送电子邮件失败

Python 文档文章 "Security considerations"有关 `smtplib` 的 SSL 上下文

python - 将 urllib2 python 代码转换为使用 urllib 模块

python - 添加带条件着色的水平线

Python boolean 真值测试

python - 从脚本中将 python 控制台输出作为电子邮件发送的最佳方法是什么?

python - 在 python 应用程序中发送和接收电子邮件(无 IMAP 或 POP3)

python - 使用 Python 验证保存的文本文件以检查参数是否设置

smtp - 发送网格 : Free plan vs Lite plan?

linux - 通过 sendmail 服务器发送邮件时遇到 sasl_decode 错误