2

运行 Joomla 2.5.8 网站,所有服务器生成的电子邮件都被标记为垃圾邮件(尽管只有 gmail!)。

我在伟大的资源http://www.mail-tester.com上进行了测试,我得到的唯一负面分数是(spamassassin 测试):

-1.105      MIME_HTML_ONLY      Message only has text/html MIME parts
You should also include a text version of your message (text/plain)

我深入研究了代码,发现 library/joomla/mail/mail.php 没有为 Text 设置等效的 AltBody;我试过:

public function setBody($content)
{
    [...]
    if (empty($this->AltBody))
        $this->AltBody =JMailHelper::cleanText( strip_tags( $content));

它有效!(邮件测试仪上的 10/10)。但它肯定是丑陋的。

我的问题是:

  • 我们应该认为这是一个 Joomla!错误并归档?
  • 有没有更干净的解决方案,而不需要侵入核心文件,也许是一些配置?

否则,我将编写一个插件来执行覆盖:这非常重要,因为我们正在失去 20% 的客户,他们似乎无法在 gmail 中找到垃圾邮件文件夹!!!,而且我真的不喜欢核心黑客30 个站点。

4

2 回答 2

4

绝对是一个可以通过 CMS 提交的错误。系统应该为您处理它。以下是如何开始提交错误:https ://github.com/joomla/joomla-cms/blob/master/CONTRIBUTING.md

此外,您可以编写一个插件来为您处理他的覆盖,而不是像您所说的那样破解核心文件。我整理了一个基础插件,允许您在此处根据需要覆盖核心类:https ://gist.github.com/dongilbert/323​​7387

如您所见,那里没有什么太复杂的事情。我们首先确保我们在 Joomla 中,否则退出。然后按照 Joomla 命名约定定义类,并将我们的配置文件包含在类结构中。配置文件是类注册到自动加载器的地方。

在配置文件中,我们定义了 OVERRIDES 路径,然后开始向 JLoader 注册类。我喜欢让事情井井有条,所以我的覆盖目录反映了 joomla 根目录的结构,只包含我想要覆盖的类的路径。这意味着如果我想覆盖 JFormField,我会有这样的结构(包括覆盖目录):

覆盖/库/joomla/form/field.php

然后在 config.php 我会添加:

JLoader::register('JFormField', OVERRIDES.'/libraries/joomla/form/field.php', true);

您还可以使用它来覆盖核心组件类。我用它来覆盖 com_media 中的视图类,如下所示:

覆盖/component/com_media/view/imageslist/view.html.php

然后当然将其添加到配置中:

JLoader::register('MediaViewImagesList', OVERRIDES.'/components/com_media/view/imageslist/view.html.php', true);

您可以从上面的 gist 链接下载插件。它已准备好安装到您的 Joomla 站点中。先上传,然后在插件目录下添加overrides目录。如果要先添加所有文件再上传,请务必将以下内容添加到 overrides.xml 文件中。

<folder>覆盖</folder>

于 2013-03-21T20:27:34.213 回答
2

谢谢你!我在 Joomla 3 中注意到了同样的问题。

无论如何,我用一个简单的方法解决了它

$mailer = JFactory::getMailer();
(...)
$mailer->setBody($messagebody);
$mailer->AltBody =JMailHelper::cleanText( strip_tags( $messagebody));

无需编辑源代码,我也不认为这应该被报告为错误(应该能够设置 AltBody,因为它更适合) - 但如果能正确记录它会很好,或者可能有一个 setAltBody() 方法.

于 2015-02-17T19:19:45.567 回答