Joomla邮件转到垃圾邮件文件夹:如何在发送HTML电子邮件时添加text / plain?

时间:2013-03-21 11:28:52

标签: email joomla registration spam spam-prevention

运行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)

我挖掘代码并发现libraries / joomla / mail / mail.php没有为Text等效设置AltBody;我试过了:

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

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

我的问题是:

  • 我们应该认为这是一个Joomla! bug和文件吗?
  • 是否有一个更清晰的解决方案,没有黑客攻击核心文件,可能是一些配置?

否则我会写一个插件来执行覆盖:这非常重要 我们失去了20%似乎无法在gmail中找到垃圾邮件文件夹的客户!!!,我真的不觉得核心攻击30个网站。

2 个答案:

答案 0 :(得分:4)

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

此外,您可以编写一个插件来处理他的覆盖,而不是像您所说的那样黑客攻击核心文件。我已经整理了一个基础插件,允许您根据需要覆盖核心类:https://gist.github.com/dongilbert/3237387

正如你所看到的那样,没有太复杂的事情发生在那里。我们首先确保我们在Joomla,否则退出。然后在Joomla命名约定之后定义类,并在类构造中包含我们的配置文件。配置文件是类注册到自动加载器的位置。

在配置文件中,我们定义OVERRIDES路径,然后开始将类注册到JLoader。我喜欢保持组织有序,所以我的覆盖目录镜像根joomla目录的结构,只包含我想要覆盖的类的路径。这意味着如果我想覆盖JFormField,我会有这样的结构(包括覆盖目录):

overrides/libraries/joomla/form/field.php

然后在config.php中我会添加:

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

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

overrides/component/com_media/view/imageslist/view.html.php

然后将其添加到配置中:

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

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

<folder>overrides</folder>

答案 1 :(得分:2)

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

无论如何,我用一个简单的

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

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