Проблема с отправкой электронной почты в ModX Revolution через FormIt

Возникла проблема с отправкой электронной почты в Modx Revolution. Используя плагин FormIt, я попытался включить Gmail SMTP в списке настроек Modx, но результат тот же. Теперь 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?


person Dmitry    schedule 02.06.2015    source источник


Ответы (1)


Это ошибка PHP, которая влияет на PHP 5.5.25 и 5.6.9 при запуске с использованием mod_php с apache. Есть несколько обходных путей, пока это не будет исправлено в 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 находится здесь.

person Synchro    schedule 02.06.2015