Имя: Пароль:
1C
 
Почта. Отправить письмо с картинкой в Base64
,
0 nAPACEHAK
 
21.05.22
17:01
Доброго

Есть шаблон html для тела письма. В шаблоне есть картинки. Если картинки размещены как src=http://.. то письмо отправляется, все норм
Если же в шаблон встроить картинку как Base64 src=data:image/jpeg;base64,/9j/4AAQ то вываливается какой то непонятный крит
https://prnt.sc/CwXhK_XI6zrg

Ошибка при вызове метода контекста (Послать)
{ВнешняяОбработка.ТестОтправкиШаблонаПисьма.Форма.Форма.Форма(75)}:        Почта.Послать(ПочтовоеСообщение);
{ВнешняяОбработка.ТестОтправкиШаблонаПисьма.Форма.Форма.Форма(4)}:    ОтправитьПочту();
по причине:
Файл не обнаружен 'file:///data:image/jpeg;base64,/9j/4AAQSkZJR......

Пробовал в УТ как электронное письмо, и просто, без типовых,

ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
ТипТекста = ?(HTML,ТипТекстаПочтовогоСообщения.HTML,ТипТекстаПочтовогоСообщения.ПростойТекст);
ТекстДляОтправки = <СодержимоеШаблона>
ПочтовоеСообщение.Тексты.Добавить(ТекстДляОтправки,ТипТекста);

Если ПростойТекст, то письмо приходит пустое
Если HTML то Файл не обнаружен 'file:///data:image/jpeg;base64,/9j/4AAQSk

вот какого... он что то пытается в файл преобразовать??? и куда копать?
Спасибо

падает тут:
Почта.Послать(ПочтовоеСообщение);
До этой строки текст сообщения без изменений. никакого упоминания о файле, вложениях там нет
1 Garykom
 
гуру
21.05.22
21:07
Подучи плиз теорию
2 nAPACEHAK
 
22.05.22
10:52
(1) это самое простое так ответить. очень информативно
3 NorthWind
 
22.05.22
11:00
(2) я не сильно владею вопросом, но вам не кажется, что у вас на скрине в (0) очень мало текста в src=data:image/jpeg?
Там же должна быть вся закодированная картинка размером 640*300, это будет довольно большая простыня. А у вас там символов 50 в строчке и кавычки закрылись.
4 Выпрь
 
22.05.22
11:08
(3) там же 3 точки внутри.это браузер так о нас заботится, что простыти не мотать
5 NorthWind
 
22.05.22
11:10
(4) нет там никаких трех точек на скрине. Тег img закрывается и все.
То есть у него просто обрезана эта строка и реально никакой картинки там нет.
6 Выпрь
 
22.05.22
11:14
/9j...
7 Выпрь
 
22.05.22
11:15
Может конечно что тег некорректно закрывается
8 NorthWind
 
22.05.22
11:19
(7) откройте его скрин https://prnt.sc/CwXhK_XI6zrg и посмотрите то, что подчеркнуто красным. Там тег закрывается и явно урезанная строчка в BASE64. То есть окончательный HTML формируется неправильно, там нет всего изображения.
9 Выпрь
 
22.05.22
11:21
(8) я тебе даже место указал где 3 точки, а ты все не видишь
10 NorthWind
 
22.05.22
11:27
а, посередине строки. Теперь увидел
11 NorthWind
 
22.05.22
11:33
так может, тогда не вставлять html как текст сообщения, а вложить html-файл в письмо?
12 NorthWind
 
22.05.22
11:37
15 NorthWind
 
22.05.22
13:36
(14) Не, не наврал. 1С так и делает, и в принципе, поскольку она это делает сама, можно вообще не греть с этим голову. Достаточно поставить локальные ссылки вроде src="file://D:/image.jpg" и положить изображения в это место. 1С при вызове Послать () сама их вложит и переделает ссылки чтобы в письме все было как надо.
16 NorthWind
 
22.05.22
13:43
Видимо, src="data:image/jpeg;base64..." не канает для сообщений электронной почты. Возможно, из соображений безопасности, а может, еще почему-то. Я попробовал еще вот так

Почта.Послать(Письмо, ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать);

но письмо с оформленным таким образом HTML просто не приходит.
17 Garykom
 
гуру
22.05.22
19:46
18 Garykom
 
гуру
22.05.22
19:46
(16) проверь спам
19 NorthWind
 
22.05.22
21:45
(18) У меня изначально рисунок просто был приличный, около 48 Кб строка base64.
И вот это не прошло.
Я подозреваю, что мейл отфутболил. В спам не попало.
Посмотрев (42), я сделал маленький рисунок, 240 байт строка. И вот такое письмо получилось пропихнуть.
20 NorthWind
 
22.05.22
21:47
похоже, что все-таки такие строки в теле HTML не являются хорошим стилем оформления документов и серверы ограничивают такое поведение. Нужно делать через вложения.
21 NorthWind
 
22.05.22
21:58
Так что на вопрос в (0) мы ответили, но вот форматировать сообщения с большими картинками все равно таким образом не получится, не будут проходить как минимум через некоторые почтовики.
22 Kassern
 
23.05.22
09:13
(19) Насколько я понял, у некоторых почтовиков ограничение в 79 символов для base64, в противном случае либо ошибка, либо попадает в спам.
23 Garykom
 
гуру
23.05.22
09:16
(22) если в css засовывать тоже?
24 Kassern
 
23.05.22
09:18
(23) не пробовал
25 NorthWind
 
23.05.22
09:38
(23) а смысл? Заморочиться с CID-ами вложений не так уж сложно и врукопашную. Но самое смешное, что даже это надо! 1С умеет сама выцеплять картинки из папки и менять ссылки в HTML.
26 NorthWind
 
23.05.22
09:40
кстати, в СП в описании к HTML-формату почты прямо написано, что применять CSS для почтового HTML не рекомендуется.
27 nAPACEHAK
 
23.05.22
18:52
(3) а смысл постить всю строку. там она неимоверной длины. смысл то понятен что там
(16) нет. так оно не придет. а если вид поставить не хтмл а текст - то придет пустое. если хтмл с картинками - то тоже самое что хтмл

я тут покопал, проблема давняя, обходят как в (13) через css background, но это тот еще костыль + теория вероятностей

итого вариант или с динамическими картинками, но, у пользователя, аутлуки, например, дефолтом скачивание картинок отключат и будут квадратики,
или никак. не получится картинку статической сделать

или может еще идеи есть?
28 NorthWind
 
23.05.22
19:17
(27) ну если пользователь или его работодатель не желает качать твои картинки, зачем его его заставлять? Я вот, например, вообще в бате часто просматриваю заголовки писем и выбираю галками, что получать, а что нет. Вообще не читая содержимое письма. И кто как с этим повоюет?
29 NorthWind
 
23.05.22
19:18
как мне думается, разумнее всего делать стандартным способом, через вложения. Не хочет пользователь качать вложения - его право. Может, у него трафик дорогой.
30 nAPACEHAK
 
25.05.22
09:14
(29) наше дело маленькое. Есть ТЗ и есть шаблон :)
31 NorthWind
 
25.05.22
10:15
(30) тогда могу посочувствовать. Спамеров никто не любит, поэтому работать таким образом будет сложно.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн