Cakephp 电子邮件间歇性送达问题

Posted

技术标签:

【中文标题】Cakephp 电子邮件间歇性送达问题【英文标题】:Cakephp Email Intermittent Deliverability Trouble 【发布时间】:2016-01-19 19:51:03 【问题描述】:

使用 Cakephp 2.4.7。

我们使用 CakeEmail 组件来创建电子邮件。 我们建立了自己的 Postfix/Dovecot 电子邮件服务器,并在过去的 3 个月里一直在追逐我们的尾巴。尽管我知道所有聪明人都说不要尝试自托管电子邮件,但我们已经解决了我曾经想象过的所有可能的问题,但我之前已经成功完成了 3 次,所以我真的没有认为再做一次会很重要。

问题是我们发送的电子邮件中有 15% 没有送达,或者作为垃圾邮件送达,对于哪些域失败并没有一致性。

我们对 SPF/DKIM/DMARC 大惊小怪。我们已提交并验证了主要域的域所有权。我们验证了我们的 IP 地址不在任何黑名单上。我聘请了三位不同的电子邮件“专家”,他们每个人都花了数周时间试图解决这个问题。

好吧,我终于认输并注册让 Rackspace 处理电子邮件。 今天早上我发现我仍然有同样的问题。 30 封电子邮件中有 7 封发往不同的域,要么未送达,要么送达垃圾邮件。

我打电话给 Rackspace。他们说这不是他们的问题。他们说我的出站电子邮件的垃圾邮件得分为 0。(我们这里不是在谈论 1000 份时事通讯。我们谈论的是针对单个地址的 30 封单独的电子邮件。)

此时我唯一能想到的是,Cakephp 构建电子邮件的方式导致一些服务器阻塞。

有人知道任何已知问题吗?有没有人经历过这样的事情?蛋糕还是其他?我迷路了。我现在不知道该怎么办。

当时我在想我会尝试使用 Google Apps,看看是否会有所作为。但我有点认为这与电子邮件的构造方式有关。

我确信我会因为这个问题过于模糊或其他原因而讨厌 cmets,但我已经没有想法从哪里开始尝试解决这个问题。所以请......如果你觉得你不能提供建设性的评论或有用的鼓励的话......请找一些其他可怜的灵魂来点燃。没有人告诉我我很愚蠢,我已经感觉很糟糕了。

任何想法将不胜感激。

【问题讨论】:

【参考方案1】:

好吧,我最近在使用 CakePHP 发送 html 邮件时遇到了一些奇怪的问题;在看似随机的地方,缺少字符或有多余的空格。原来,电子邮件的 HTML 部分中的行太长,邮件服务器会在那里强制换行。

我不确定这是否足以导致邮件拒绝或垃圾邮件标记(尽管损坏的 HTML 可能会被拒绝)。

为了防止这个问题,HTML 有时会在邮件中进行 base64 编码以规避行长;另一种方法是确保所有 HTML 输出都包含足够的换行符。

当然,有趣的是邮件日志中的一些条目会告诉您邮件未送达的原因。

【讨论】:

以上是关于Cakephp 电子邮件间歇性送达问题的主要内容,如果未能解决你的问题,请参考以下文章

检查在 CakePHP 中发送电子邮件是不是成功/失败?

cakephp 电子邮件组件 phpmailer

CakePHP:向多个地址发送电子邮件

用于发送时事通讯(电子邮件)的最佳 cakephp 插件 [关闭]

CakePHP / 通用 HTML 电子邮件

如何使用 CakePHP 电子邮件组件?