通过 sendgrid 发送的纯文本电子邮件中的额外换行符
我们使用 CodeIgniter (v1.7) 和 PHPMailer (v5.1) 从 PHP 发送纯文本电子邮件。当前的生产设置使用廉价的 SMTP 中继,计划切换到 CritSend 或 SendGrid。我们现在正在 Rackspace 云服务器上测试这些选项。
当我们使用 SendGrid SMTP 时,emial 中的所有“\r\n”换行符最终都会加倍,因此最终为“\r\n\r\n”。
使用 CritSend SMTP 以及其他两个 SMTP 服务器时一切正常。
SendGrid 技术支持认为这与他们的系统无关,但听说另一个客户端也有同样的问题,显然通过客户端的配置更改解决了这个问题。
有人经历过这个吗?
这对我们来说并不重要,因为 CritSend 运行良好并且在功能上看起来与 SendGrid 一样好,因此我们将使用它们。但作为一个好奇的人,我就是不能放手:-)
通常的设置:PHP 脚本 -> sendmail/Postfix ->外部 SMTP 中继 -> ....
为了测试不同的 SMTP 中继,我更改了 postfix 配置,只有 SendGrid 提供了额外的换行符,所有其他 SMTP 选项都工作正常。如果我通过 CodeIgniter 电子邮件类调试功能转储电子邮件,那么在发送到 postfix 之前它看起来很好。
备用设置:PHP 脚本(CI 邮件类或 PHPMialer)->外部 SMTP 中继 -> ....
为了测试不同的 SMTP 中继,我更改了 CI 电子邮件配置或 PHPMialer 配置中的 SMTP 设置。只有 SendGrid 提供额外的换行符,所有其他 SMTP 选项都可以正常工作。
据我所知,没有那么多选择可以玩。我尝试了“utf-8”和“ISO-something or other”,我们这边的所有换行符都是“\r\n”……似乎是某个地方的一些非常隐晦的错误。
有什么想法吗?
We send emails in plain text from PHP using CodeIgniter (v1.7) and also PHPMailer (v5.1). Current production setup uses a cheapie SMTP relay, plan is to switch to a CritSend or SendGrid. We are testing the options now from a Rackspace Cloud server.
When we use SendGrid SMTP all "\r\n" newlines in the emials end up being doubled up, so end up as "\r\n\r\n".
All works fine when using CritSend SMTP and also two other SMTP servers.
SendGrid tech support don't think it is anything to do with their system, but have heard of another client with the same issue and apparently it got solved with a config change on the client's side.
Anyone experienced this?
This isn't critical for us as CritSend works well and seems as good as SendGrid on features, so we will go with them. BUT being a curious type, I just can't let this go :-)
Usual setup: PHP script -> sendmail/Postfix -> external SMTP relay -> ....
To test the different SMTP relays I change the postfix config, only SendGrid gives the extra newlines all other SMTP options work fine. If I dump the email via CodeIgniter email class debug function it looks fine before it goes to postfix.
Alternate setup: PHP script (either CI mail class or PHPMialer) -> external SMTP relay -> ....
To test the different SMTP relays I change the SMTP settings in the CI email config or PHPMialer config. Only SendGrid gives the extra newlines all other SMTP options work fine.
There aren't all that many options to play with as far as I can see. I tried "utf-8" and "ISO-something or other", all newlines on our side are "\r\n"...... seesm like some very obscure bug somewhere.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好的,再做一点实验,这些设置使纯文本电子邮件可以很好地通过 PHPMailer 的 SendGrid:
“引用可打印”部分是关键。
OK, a bit more experimenting and these settings make plain text emails go trough SendGrid nicely from PHPMailer:
The "quoted-printable" part is the key.
对我有用的是在 PHP 文本中使用实际的换行符,如下所示:
What worked for me was using actual line-breaks in the PHP text as follows: