拦截所有 Joomla 外发电子邮件并将它们重新路由到指定地址

Posted

技术标签:

【中文标题】拦截所有 Joomla 外发电子邮件并将它们重新路由到指定地址【英文标题】:Intercept all Joomla outgoing emails & reroute them to a specified address 【发布时间】:2014-01-24 18:47:08 【问题描述】:

我正在开发一个新的 Joomla 网站,并且正在测试外发电子邮件。我希望能够拦截所有传出的电子邮件并将它们重新路由到我指定的地址。当您拥有拥有数千名用户的实时站点副本时,它在开发中非常有用,因此电子邮件不会从副本站点发送给真实用户。

使用扩展程序来做这件事会很棒,但一直找不到做一些事情的人。如有必要,我也愿意在服务器端完成这项工作。

我找到了一个 Drupal 模块,它完全可以做我想做的事情,除了它显然是为 Drupal 和注意 Joomla 的。

https://drupal.org/project/reroute_email

【问题讨论】:

【参考方案1】:

在 Joomla 级别上,您可以创建一个系统插件来加载自己的猴子补丁 JMail 类。

由于命名空间冲突,我不确定您是否能够扩展原始 JMail,所以也许您需要将其复制并更改 addRecipient 方法:

public function addRecipient($recipient, $name = '')

    $this->add('custom@email.com', 'custom name', 'AddAddress');

    return $this;

参考资料:

相关堆栈溢出答案:How to override core classes 要点:plgSystemOverrides

【讨论】:

我不认为 addRecipient 方法总是用于发送电子邮件。例如JFactory::getMailer()->sendMail($from, $sender, $email, $subject, $body) 没关系,sendMail 方法使用 addRecipient。为了进行测试,我刚刚修改了暂存站点上的 mail.php。如果我有时间创建一个插件,我会在这里发布。谢谢! 我建议为邮件包创建一个覆盖插件,否则您的更改可能会被 Joomla 更新覆盖(例如将 docblocks 版权更新到 2014)。

以上是关于拦截所有 Joomla 外发电子邮件并将它们重新路由到指定地址的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 防止反病毒阻止外发电子邮件

Joomla:一次为所有文章重新生成别名?

PHP 中的 Joomla 独立脚本 - 握手

Linux sendmail到底怎么往外发邮件

php 更改WordPress的默认外发电子邮件

外发电子邮件在SharePoint 2019中不起作用