Василий Наумкин

Василий Наумкин

Был в сети 10 июня 2026, 17:44
Заказы не принимаю
На здоровье!

Но, справедливости ради, я никак не помогал выпуску этой версии — только отправил 3 pull-request, которые сочли возможным вставить в 2.7, а не ждать 3.0.

Но, в любом случае, новость очень позитивная. Теперь ждём новостей по 3й версии.
У меня все письма перед отправкой проходят через pelago/emogrifier — так что на расхождений в отображении почти нет.

Грузим свой почтовый класс раньше всех:
$modx->getService('mail', 'extraMail', 'path/to/class');

А в классе extraMail добавляем свою обработку:
<?php
if (!class_exists('modPHPMailer')) {
    /** @noinspection PhpIncludeInspection */
    require MODX_CORE_PATH . 'model/modx/mail/modphpmailer.class.php';
}

class extraMail extends modPHPMailer
{
    /** @var PHPMailer $mailer */
    public $mailer;
    
    /**
     * @param string $key
     * @param mixed $value
     */
    public function set($key, $value)
    {
        if ($key == modMail::MAIL_BODY) {
            $emogrifier = new \Pelago\Emogrifier($value);
            $value = $emogrifier->emogrify();
            $this->set(modMail::MAIL_BODY_TEXT, $this->mailer->html2text(nl2br($value)));
        }
        parent::set($key, $value);
    }