Имя: Пароль:
1C
 
Вставить картинку в текст письма.
0 Zombi
 
07.06.24
09:45
Пытаюсь отправить письмо с картинкой в тексте письма. Делаю по примеру:

Профиль = Новый ИнтернетПочтовыйПрофиль;
			Профиль.АдресСервераSMTP = "192.168.0.192";
			Профиль.ПортSMTP = "25";
			
			Почта = Новый ИнтернетПочта;
			
			Письмо = Новый ИнтернетПочтовоеСообщение;
			
			Текст =  "
			|<h3>  Привет !</h3>
			|Это  письмо с вложенной картинкой.<br />
			|Картинка:<br  />
			|<img  src=""file:///F:/Base/ШтрТест.png"" /><br />
			|Конец  письма.
			|";
			
			Письмо.Тексты.Добавить(Текст,ТипТекстаПочтовогоСообщения.HTML);
			Письмо.ОбработатьТексты();
			
			Письмо.Тема = "Уведомление о готовности заказа";
			Письмо.Отправитель = "report@111.ru";
			Письмо.ИмяОтправителя = "НашаОрганизация";
			Письмо.Получатели.Добавить(АдресУведомления);
			
			Попытка
				Почта.Подключиться(Профиль);
				Почта.Послать(Письмо);
			Исключение
			КонецПопытки;
			
			Почта.Отключиться();



Письмо получаю вот такое:





https://disk.yandex.ru/i/bBRD1qs4Biny1Q

В отладчике смотрю, после метода ОбработатьТексты вот такой текст письма:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head content="text/html" http-equiv="Content-Type" charset=""></head><body><h3>  Привет !</h3>
Это  письмо с вложенной картинкой.<br>
Картинка:<br><img src="cid:0f647a99-b22a-43f6-a4e6-d8d3b1f18994"></img><br>
Конец  письма.
</body></html>

Вложение письма тоже заполнено:
https://disk.yandex.ru/i/B1RYVwyj1tvgPA

Идентификатор вложения совпадает с идентификатором в теле. Почему в письме картинка битая?
1 Ёпрст
 
07.06.24
09:47
(0)
потамучта вот эта хрень не рабочая
file:///F:/Base/ШтрТест.png
2 Ёпрст
 
07.06.24
09:47
воткни ужо картинку в строку base64 и пихай её в html
3 Zombi
 
07.06.24
09:56
ИмяФайла = "F:\Base\ШтрТест.png";
ФайлСФото = Новый ДвоичныеДанные(ИмяФайла);

Так? Дальше как пихнуть в html?
4 Zombi
 
07.06.24
10:11
КартинкаСтрока = Base64Строка(ФайлСФото);

Вот так наверное надо еще... Дальше как быть?
5 Тихий омут
 
07.06.24
10:19
Что то вроде "<img src=""data:image/png;base64,"+КартинкаQRКодаВФорматеBase64+""" width=""150"" height=""150"" alt=""QR код""/>", но это не точно
6 Ёпрст
 
07.06.24
10:25
(4)
src=""data:image/jpeg;base64,"+ Картинка64 + """
7 Ёпрст
 
07.06.24
10:26
ну там, png
8 Zombi
 
07.06.24
11:04
Спасибо. Вечером буду пробовать.
9 Zombi
 
25.06.24
10:53
Подниму тему. Проблема у меня с добавлением строки base64 в html.

Код такой:

ИмяФайла = "F:\Base\ШтрТест.png";

ФайлСФото = Новый ДвоичныеДанные(ИмяФайла);
            КартинкаСтрока = Base64Строка(ФайлСФото);

Письмо = Новый ИнтернетПочтовоеСообщение;

Текст =  "
            |<h3>  Привет !</h3>
            |Это  письмо с вложенной картинкой.<br />
            |Картинка:<br  />
            |<img  src=""data:image/png;base64,"+ КартинкаСтрока + """ /><br />
            |Конец  письма.
            |";
            
            //ПочтовоеВложение = Письмо.Вложения.Добавить(ИмяФайла);
            //cid = Новый УникальныйИдентификатор;
            //ПочтовоеВложение.Идентификатор = cid;
            
            Письмо.Тексты.Добавить(Текст,ТипТекстаПочтовогоСообщения.HTML);
            Письмо.ОбработатьТексты();

Проблема в том, что Base64Строка(ФайлСФото) возвращает строку с длинной 959 776. В Итоге на строке Письмо.ОбработатьТексты(); 1с долго думает и валится в непонятную ошибку с вот таким невидимым или прозрачным окном. Сама картинка 600 кб весит. В чем косяк?
10 ЖНЕЦ
 
25.06.24
10:57
(9) попробуй убрать ОбработатьТексты()
11 Zombi
 
25.06.24
11:36
(10) Убрал. Такая же ошибка, только на строке Почта.Послать(Письмо);
12 Ёпрст
 
26.06.24
09:48
(9) скорее всего,  этом:
13 Ёпрст
 
26.06.24
10:10
Вот так пробуй, должно взлететь:
	Текст =  "
			|<h3>  Привет !</h3>
			|Это  письмо с вложенной картинкой.<br />
			|Картинка:<br  />
			|<img  src=""F:\Base\ШтрТест.png"" /><br />
			|Конец  письма.
			|";
14 arsik
 
26.06.24
10:18
15 Zombi
 
26.06.24
11:42
(13) Так отправляется, но картинка в письме битая, как на скриншоте в (0)
16 Ёпрст
 
26.06.24
13:52
(15) у меня норм. Что с ОбработатьТексты, что без. Видать, от почты получателя зависит
17 Ёпрст
 
26.06.24
13:52
Если путь сетевой к картинке, двойной слеш замени на одинарный
18 Ёпрст
 
26.06.24
13:56
У тяможет, в ящике запрещены влржения и показ картинок, в настройках покапайся, там есть, типа покпзать оригинал письма или покпз картинок
19 Garykom
 
26.06.24
14:07
(17) Сетевые пути с "\\" лучше не использовать
Часто глючит, лучше на букву диска подключать да
20 timurhv
 
26.06.24
14:30
(19) А если получатель на Linux?
Лучше уж в base64
21 Ёпрст
 
26.06.24
15:05
(20) в base64 1с-ина не могёт, пытается всё, что после тэга img искать файло на диске, выдаст ошибку что файл не найден..
22 Максим Нижегородец
 
26.06.24
15:11
Если отправляется в письме HTML и картинка, то картинка должна быть во вложениях письма (И все прокатывает).
23 arsik
 
26.06.24
15:12
Нафига это? Вкладываете в письмо картинку. В html id картинки указываете.
24 Максим Нижегородец
 
26.06.24
15:20
У получателя этой картинки нет, больше сказать не чего. А в html указывается путь к картинке.
25 Zombi
 
26.06.24
22:51
Нашел причину. Мне прислали для теста штрихкод в формате бмп, а по факту это был пдф переименованный в бмп. Причем при открытии какой то программой открывался и не писал нигде что это пдф. Обнаружил случайно, когда в полученном письме попытался скачать вложение и у меня скачался пдф. Сделал нормальный бмп рисунок и все заработало. Спасибо всем.
26 Волшебник
 
26.06.24
22:53
(25) Ага, спасибо за инфу. 👍
27 DrZombi
 
27.06.24
06:20
(0) Оно в 1С не так вставляется.
У картинки есть ИД.
Вернее при прикреплении картинки у ней можно указать ИД.
И этот же ИД прописывается в теле письма, и вуаля, картинко...


Зырь:



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

ИнтернетПочтовоеВложение (InternetMailAttachment)
Свойства:
Данные (Data)
Идентификатор (CID)
Имя (Name)
ИмяФайла (FileName)
Кодировка (Encoding)
СпособКодирования (EncodingMode)
ТипСодержимого (MIMEType)
Описание:
Вложение в почтовое сообщение представляет собой двоичные данные.

//пример генерации СИД-а:

cid_ID_0 = СокрЛП(Новый УникальныйИдентификатор());


//Пример в теле письма.

        Письмо_Тело = Письмо_Тело + "
        |<br/>
        |Картинка 'Аналитическая справка'<br/>
        |<br/>
        |<img height=""592"" src=""cid:"+cid_ID_0+""" style=""border:none;"" width=""1140""/>";


28 DrZombi
 
27.06.24
06:23
(25) И помни, никакого обращения к файлам, все через двоичные данные :)
29 DrZombi
 
27.06.24
06:25
+(0) Картинка, которая связана с телом в письме, становится невидимым для получателя, в качестве вложения.