1

Modx Revolution 中的电子邮件发送存在问题。使用 FormIt 插件,我尝试在 Modx 设置列表中启用 Gmail SMTP,但结果相同。现在 SMTP 已禁用。

使用此 FormIt 调用:

[[!FormIt? 
     &hooks=`email,redirect`
     &redirectTo=`19`
     &redirectParams=`{"success":"1"}`
     &emailTpl=`feedbackEmailTpl`
     &emailSubject=`New request from [[++site_name]]`
     &emailTo=`***@gmail.com`
     &emailToName=`Support`
     &emailReplyTo=`***@gmail.com`
     &emailFrom=`***@gmail.com`
     &emailFromName=`***@gmail.com`
     &errTpl=`<span class="label label-warning">[[+error]]</span>`
     &validate=`
         name:required:stripTags,
         clientemail:email:required,
         message:required:stripTags
     `
     &clearFieldsOnSuccess=`1`
     &validationErrorMessage=`Error.`
]]

在 error.log 文件中:

[2015-06-02 10:33:37] (ERROR @ /var/www/site/core/model/modx/mail/phpmailer/class.phpmailer.php : 893) PHP warning: preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 728
[2015-06-02 10:33:37] (ERROR @ /var/www/site/core/model/modx/mail/phpmailer/class.phpmailer.php : 893) PHP warning: preg_match(): Compilation failed: internal error: previously-checked referenced subpattern not found at offset 728
[2015-06-02 10:33:37] (ERROR @ /index.php) [FormIt] Произошла ошибка при попытке отправить почту. Пожалуйста, введите хотя бы один адрес e-mail получателя.

有什么问题?这个麻烦是否与 PHPMailer 相关?

4

1 回答 1

1

这是一个 PHP 错误,当使用带有 apache 的 mod_php 运行时会影响 PHP 5.5.25 和 5.6.9。有一些解决方法,直到它在 PHP 中修复。

  1. 将 PHP 降级到 5.5.24 或 5.6.8
  2. 切换到PHP-FPM而不是 mod_php(无论如何这是个好主意)
  3. 覆盖 PHPMailer 类并将默认电子邮件验证方法更改为“php”。

最后一种方法是这样完成的:

class myMailer extends PHPMailer
{
    public static function validateAddress($address, $patternselect = 'php')
    {
        return parent::validateAddress($address, $patternselect);
    }
}

然后使用该子类而不是普通的 PHPMailer 类。同样的错误已经影响了其他各种 PHP 项目,例如 Typo3 和 SwiftMailer。在 PHPMailer 中跟踪它的错误在这里

于 2015-06-02T09:11:58.603 回答