Поддержка серверов

Message::ensureAttachments: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=498647

//    Bitrix\Mail\Helper\Message::ensureAttachments()
//    /bitrix/modules/mail/lib/helper/message.php:343

    public static function ensureAttachments(&$message)
    {
        if ($message['ATTACHMENTS'] > 0 || !($message['OPTIONS']['attachments'] > 0))
        {
            return;
        }

        if (Main\Config\Option::get('mail', 'save_attachments', B_MAIL_SAVE_ATTACHMENTS) !== 'Y')
        {
            return;
        }

        $mailboxHelper = Mailbox::createInstance($message['MAILBOX_ID'], false);

        $attachments = empty($mailboxHelper) ? false : $mailboxHelper->downloadAttachments($message);

        if (false === $attachments)
        {
            $logEntry = sprintf(
                'Helper\Message: Attachments downloading failed (%u:%s:%u)',
                $message['MAILBOX_ID'],
                $message['DIR_MD5'],
                $message['MSG_UID']
            );

            if (!empty($mailboxHelper) && !$mailboxHelper->getErrors()->isEmpty())
            {
                $logEntry .= PHP_EOL . join(PHP_EOL, $mailboxHelper->getErrors()->toArray());
            }

            addMessage2Log($logEntry, 'mail', 2);

            return false;
        }

        foreach ($attachments as $i => $item)
        {
            $attachFields = array(
                'MESSAGE_ID' => $message['ID'],
                'FILE_NAME' => $item['FILENAME'],
                'CONTENT_TYPE' => $item['CONTENT-TYPE'],
                'FILE_DATA' => $item['BODY'],
                'CONTENT_ID' => $item['CONTENT-ID'],
            );

            $attachmentId = \CMailMessage::addAttachment($attachFields);

            if ($attachmentId > 0)
            {
                $message['ATTACHMENTS']++;

                $message['BODY_HTML'] = preg_replace(
                    sprintf(
                        '/]+)src\s*=\s*(\'|\")?\s*(http:\/\/cid:%s)\s*\2([^>]*)>/is',
                        preg_quote($item['CONTENT-ID'], '/')
                    ),
                    sprintf('', $attachmentId),
                    $message['BODY_HTML']
                );
            }
        }

        if ($message['ATTACHMENTS'] > 0)
        {
            \CMailMessage::update($message['ID'], array('BODY_HTML' => $message['BODY_HTML']));

            return $message['ID'];
        }
    }

Блог разработчика

9 августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение