Как отправить изображение в теле письма из 1С, чтобы оно не отображалось как вложение

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При автоматизации рассылок из 1С:Предприятия разработчики часто сталкиваются с тем, что изображения, встроенные в HTML-текст письма, дублируются в списке вложений у получателя. Это выглядит непрофессионально и может перегружать интерфейс почтового клиента. В этой статье мы разберем механизмы работы платформы с почтовыми сообщениями и выясним, как правильно внедрять графический контент. Подобные навыки необходимы, например, для автоматизации отправки счетов и договоров из 1С:Бухгалтерии 3.0 по электронной почте.

Почему изображения попадают во вложения?

Проанализируем поведение платформы 1С. Когда мы используем объект ИнтернетПочтовоеСообщение и устанавливаем тип текста как ТипТекстаПочтовогоСообщения.HTML, платформа автоматически парсит содержимое текста. Если в теге <img> указан локальный путь к файлу на диске сервера (например, C:/img.png), 1С пытается найти этот файл, самостоятельно прикрепить его к письму и заменить путь в HTML на внутреннюю ссылку. Именно эта автоматизация приводит к тому, что картинка отображается и в тексте, и в списке прикрепленных файлов.

Способ 1: Использование механизма Content-ID (CID)

Это наиболее корректный и стандартный способ для формирования электронных писем. Его суть заключается в явном связывании вложенного файла с местом в HTML-коде. Рассмотрим этот процесс по шагам:

  1. Создание вложения: Сначала мы программно добавляем файл картинки в коллекцию Вложения объекта сообщения.
  2. Назначение идентификатора: У объекта вложения необходимо заполнить свойство Идентификатор. Это должна быть уникальная строка без пробелов.
  3. Ссылка в HTML: В тексте письма, в теге <img>, вместо пути к файлу указывается протокол cid: и назначенный идентификатор.

Разберем пример кода для реализации этого метода:


Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = "Тестовое письмо с картинкой";

// Добавляем файл во вложения
КартинкаВложение = Сообщение.Вложения.Добавить("C:\Pictures\Logo.png");
КартинкаВложение.Идентификатор = "MyUniqueLogoID"; // Уникальный ID

// Формируем HTML текст с использованием CID
ТекстHTML = "<html>
|<body>
|<p>Здравствуйте! Посмотрите на наш логотип:</p>
|<img src=""cid:MyUniqueLogoID"">
|</body>
|</html>";

ТекстСообщения = Сообщение.Тексты.Добавить(ТекстHTML, ТипТекстаПочтовогоСообщения.HTML);

Важный нюанс: Использование свойства Идентификатор заставляет почтовые клиенты (такие как Outlook или Gmail) воспринимать вложение как часть оформления (inline-объект), что скрывает его из общего списка файлов. Для автоматизации подобного отображения при выполнении задач подойдёт расширение для вставки картинок в тело письма.

Способ 2: Использование Base64 через CSS

Если по каким-то причинам стандартный метод с cid не подходит, можно попробовать внедрить изображение непосредственно в код страницы в виде текстовой строки (Base64). Однако, как было замечено в обсуждении, прямая вставка data:image в атрибут src тега img часто вызывает ошибку "Файл не обнаружен" в 1С, так как платформа ошибочно принимает эту строку за путь к файлу.

Выясним, как обойти это ограничение через использование CSS-стилей. Мы можем задать картинку как фоновое изображение для элемента. Посмотрим на пример:


Текст = "<style>
|.image_box {
|  width: 200px;
|  height: 100px;
|  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...') no-repeat;
|}
|</style>
|<div class='image_box'></div>";

ИнтернетТекст = Сообщение.Тексты.Добавить();
ИнтернетТекст.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;
ИнтернетТекст.Текст = Текст;

Ограничения метода:

Способ 3: Внешние HTTP-ссылки

Самый простой способ избежать вложений в письме — это загрузить изображение на публичный сервер или облачное хранилище (CDN) и указать в письме прямую ссылку с помощью автоматической выгрузки файлов на FTP или сайт.

Рассмотрим преимущества и недостатки:


// В HTML коде указываем просто URL
ИнтернетТекстПочтовогоСообщения.Текст = "<p>Наш логотип:</p><img src='https://mysite.ru/images/logo.png'>";

Рекомендации по выбору метода

Проанализировав все варианты, мы рекомендуем придерживаться следующей логики:

  1. Если важно, чтобы изображение отобразилось сразу и без лишних манипуляций пользователя — используйте Метод 1 (CID). Это наиболее стабильный вариант для корпоративной среды.
  2. Если вы отправляете массовую рассылку с тяжелыми картинками — используйте Метод 3 (Внешние ссылки), чтобы не нагружать почтовый сервер.
  3. Избегайте указания путей в формате file:///, так как это вызывает ошибки исполнения кода на стороне сервера 1С, если у пользователя или службы сервера нет доступа к указанному каталогу.

Соблюдение этих правил позволит вам создавать чистые и корректные письма, которые будут правильно восприниматься любыми почтовыми сервисами. Правильное оформление HTML-текста важно и для автоматической отправки уведомлений об обновлении и архивации баз на электронную почту.

← На главную