通过FormIt在ModX Revolution中发送电子邮件的麻烦

时间:2015-06-02 08:01:47

标签: email phpmailer modx modx-revolution formit

在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绑定了?

1 个答案:

答案 0 :(得分:1)

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

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

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

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