Всем привет.
Вроде типовая задача, но внятного решения я к сожалению не нашел.
Задача проста, при проведении Заказа клиента, нужно отправить табличный документе, в виде HTML письма, все хорошо, но картинка (штрих код) документа отправляется пустым "кубиком".
Насколько понял две пробелемы.
1) Как сохранить штрих код, произвольные картинки из макета табличного документа, для отправки в HTML письма?
2) Как подцепить эти картинки к письму? нужно подменять ID Этих картинок, но не понял как его получить?
код отправки самого письма у меня получился такой:
Картинки в HTML - это или сцылка на файл, или встроенная в сцылку двоичная строка, закодированная в base64. Перед отправкой пройдись по HTML, найти там "img src=", поменяй это на img "src='dat a:base64," - ну и закинь сюды картинку, которую можно вытащить из коллекции картинок табличного документа.
https://ru.wikipedia.org/wiki/Data:_URL
(2) нашел такую же тему https://forum.infostart.ru/forum9/topic168715/ тупо "копипастом" - не работает.
при указании HTML5 вместо HTML тег IMG вообще не появлялся, ладно, сохранил в HTML, и картинка насколько я могу судить закодировалась, но все равно не работает.
Если не убираю ПараметрыПисьма.Вставить("ОбрабатыватьТексты", Ложь)
тогда письмо отрпавляется и ловлю все тот же пустой кубик вместо картинки.
Если с ОбработкойТекста - то ловлю ошибку
ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(1529)}: Ошибка при вызове метода контекста (ОбработатьТексты)
Письмо.ОбработатьТексты();
по причине:
Файл не обнаружен 'file:///data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfYAAAA8CAYAAACU75jaAAABnUlEQVR4AezVy66C
MBSGUfD93/noGTiwSbN3C0z+rDXT9AIF/c6/j2PiPM+fz9+h3+/HqeP4cd44brZ1
tU51Xd15T63bvd/x+9k+s3WrdXafV3Ufu+ezev27512de3ff3fez2n/1HK+e99X3
bPU+uuc/G9f9vVTrdc+lew7V9c72q9bvzr973buf5+5zW933qffu6nV1583GjeN3
/5/+vQ4AIIawA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeA
IMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2
AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7ECod3t1IAAAAMAw
yN/6HntJBJ/EDgAhYgeAELEDQIjYASBE7AAQInYACBE7AISIHQBCxA4AIWIHgBCx
A0CI2AEgROwAECJ2AAgROwCEiB0AQsQOACFiB4AQsQNAiNgBIETsABAidgAIETsA
hIgdAELEDgAhYgeAELEDQMgAp6XNdPIXcvUAAAAASUVORK5CYII='
подскажите пожалуйста что не так? в html я вообще 0
(3) ну так Вы стандарта не придерживаетесь (ну или не Вы, а те товарищи, который сохранение писали в HTML). Просто сделайте правильно и проблема уйдет. Как правильно - см. сцылку.
Переделал еще раз, теперь получился вот такой код:
ТабличныйДокумент = Заказ.ПолучитьОбъект().ПолучитьТабличныйДокументДляEmail();
ИмяФайлаHTML = ПолучитьИмяВременногоФайла();
ТабличныйДокумент.Записать(ИмяФайлаHTML, ТипФайлаТабличногоДокумента.HTML);
ТекстПисьма = Новый ТекстовыйДокумент;
ТекстПисьма.Прочитать(ИмяФайлаHTML);
ТекстHTML = ТекстПисьма.ПолучитьТекст();
ФайлHTML = Новый Файл(ИмяФайлаHTML);
ИмяКаталогаКартинок = ФайлHTML.ИмяБезРасширения + "_files";
ПутьКаталогаКартинок = СтрЗаменить(ФайлHTML.ПолноеИмя, ФайлHTML.Имя, ИмяКаталогаКартинок);
// Ожидается, что в каталоге будут только картинки.
ФайлыКартинок = НайтиФайлы(ПутьКаталогаКартинок, "*");
Для Каждого ФайлКартинки Из ФайлыКартинок Цикл
КартинкаТекстом = Base64Строка(Новый ДвоичныеДанные(ФайлКартинки.ПолноеИмя));
КартинкаТекстом = "data:image/" + Сред(ФайлКартинки.Расширение,2) + ";base64," + Символы.ПС + КартинкаТекстом;
ТекстHTML = СтрЗаменить(ТекстHTML, ИмяКаталогаКартинок + "/" + ФайлКартинки.Имя, КартинкаТекстом);
КонецЦикла;
ТекстПисьма.УстановитьТекст(ТекстHTML);
ТекстПисьма.Записать(ИмяФайлаHTML, КодировкаТекста.UTF8);
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", "klient@mail.ru");
ПараметрыПисьма.Вставить("Копия", "klient@mail.ru");
ПараметрыПисьма.Вставить("Тема", "Заказ" );
ПараметрыПисьма.Вставить("ТипТекста", Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками);
ПараметрыПисьма.Вставить("Тело", ТекстHTML);
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), ПараметрыПисьма);
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("system@system.ru"), Письмо);
Показать
и по прежнему ловлю
ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(1529)}: Ошибка при вызове метода контекста (ОбработатьТексты)
Письмо.ОбработатьТексты();
по причине:
Файл не обнаружен 'file:///data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfYAAAA8CAYAAACU75jaAAABnUlEQVR4AezVy66C
MBSGUfD93/noGTiwSbN3C0z+rDXT9AIF/c6/j2PiPM+fz9+h3+/HqeP4cd44brZ1
tU51Xd15T63bvd/x+9k+s3WrdXafV3Ufu+ezev27512de3ff3fez2n/1HK+e99X3
bPU+uuc/G9f9vVTrdc+lew7V9c72q9bvzr973buf5+5zW933qffu6nV1583GjeN3
/5/+vQ4AIIawA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeA
IMIOAEGEHQCCCDsABBF2AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2
AAgi7AAQRNgBIIiwA0AQYQeAIMIOAEGEHQCCCDsABBF2AAgi7ECod3t1IAAAAMAw
yN/6HntJBJ/EDgAhYgeAELEDQIjYASBE7AAQInYACBE7AISIHQBCxA4AIWIHgBCx
A0CI2AEgROwAECJ2AAgROwCEiB0AQsQOACFiB4AQsQNAiNgBIETsABAidgAIETsA
hIgdAELEDgAhYgeAELEDQMgAp6XNdPIXcvUAAAAASUVORK5CYII='