【发布时间】:2021-04-14 16:51:10
【问题描述】:
我们每天早上都会向大型分发机构发送一份圣经每日灵修。我相信我们分发过程的速度受到与 Symfony/SwiftMailer 相关的 DKIM Signer 的限制。我们向每个电子邮件地址发送相同的两部分电子邮件(html 和纯文本)。每封电子邮件仅发送到一个具有唯一标头的电子邮件地址,以帮助处理退回邮件。
这是我们发送的每封电子邮件的处理流程:
- 新的\Swift_Message
- setSubject, setBody (html), addPart (纯文本), addTextHeaders
- attachSigner 用于 DKIM(标题/松弛、正文/简单)
- 发送
如何优化此序列以减少处理时间?我知道 DKIM 处理是昂贵的。如果 DKIM 正文处理可以只进行一次就好了,因为每封电子邮件的正文都是相同的。由于标头从一封电子邮件更改为下一封,因此需要对每封电子邮件进行 DKIM 标头处理。
如果我将代码结构如下:
- 新的 \Swift 消息
- setSubject、setBody (html)、addPart(纯文本)
- 为 DKIM 附加签名者
- foreach 电子邮件地址
- 删除现有标题
- 添加文本标题
- 发送
我知道这会提高性能,因为每封电子邮件执行的代码更少。 Swift 是否足够聪明,可以知道电子邮件正文的内容没有改变?不为每封电子邮件执行 DKIM 正文计算是否足够聪明?如果是这样,这将带来巨大的性能提升,有可能提高我们的电子邮件发送率。
【问题讨论】:
-
对于可通过symfony.com/community 访问的 Symfony Slack 频道来说可能是一个更好的问题
-
DKIM 签名的不仅仅是正文,签名中还包含许多标题。您的传出 SMTP 服务器应该进行签名。