Имя: Пароль:
1C
1С v8
Отправка письма в виде HTML
,
0 Sasha_H
 
21.11.12
18:14
есть поле ФорматированныйДокумент

ФорматированныйТекст = Задание.ХранилищеТекста.Получить();
ТекстHTML = ""; Вложения = Новый Структура;
ФорматированныйТекст.ПолучитьHTML(ТекстHTML,Вложения);

Почта = Новый ИнтернетПочта();
   Попытка
       Почта.Подключиться(ПочтовыйПрофиль);
   Исключение
       Сообщить("ОБМЕН: Ошибка при подключении к почтовому профилю! Обмен не выполнен! " +
       ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
       Возврат;
   КонецПопытки;

   ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
   МассивОтправителя = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(НастройкиТекущегоПользователя.Отправитель);
   ПочтовоеСообщение.Отправитель = МассивОтправителя.Получить(0).Адрес;
   ПочтовоеСообщение.Тема = СтруктураПисьма.Тема;
   ПочтовоеСообщение.Важность = ВажностьИнтернетПочтовогоСообщения.Высокая;
   
   ПочтовоеСообщение.Тексты.Добавить(СтруктураПисьма.ТелоСообщения,ТипТекстаПочтовогоСообщения.HTML);

Почта.Послать(ПочтовоеСообщение);

Здесь падает на ошибке "файл не обнаружен image001" дело в том что в форматированном документе есть картинка, как корректно отправить такое сообщение?
1 Sasha_H
 
21.11.12
18:17
СтруктураПисьма.ТелоСообщения = ТекстHTML
2 Юрий Лазаренко
 
21.11.12
18:17
(0) Картинки надо добавить как вложения. Разбери форматированный документ на текст и картинки, добавь картинки как вложения - тогда отправится. Код не помню, года 2 назад последний раз с этим сталкивался, но в типовых или в БСП легко найдешь пример.
3 Sasha_H
 
21.11.12
18:17
просто процедуру всю не стал сюда представлять.
4 Sasha_H
 
21.11.12
18:18
Вложения - есть данная картинка.
Вопрос еще в том, ее надо сохранять на диск или так можно?
5 Юрий Лазаренко
 
21.11.12
18:26
(4) Насколько помню - не надо на диск, она в базе сохраняется
6 Sasha_H
 
21.11.12
18:53
чет ругается

сохранил на диск, проверил есть файл.

ПочтовоеСообщение.Вложения.Добавить(ПутьКФайлу,"image001");

"image001" - специально так написал и всеравно ошибка!
7 Sasha_H
 
21.11.12
18:55
А вот что в НТМЛ строке:

<p style='line-height: 1.15'><img src='image001' width='796' height='464'/></br></p>
8 mih_io
 
21.11.12
18:56
для начала определись. Ты хочешь что бы получатель получил картинку во вложении или чтобы картинка была вставлена в тексте письма?
9 Sasha_H
 
21.11.12
18:56
как же отправить картинку в почтовом листе?
10 Sasha_H
 
21.11.12
18:57
(8) да я определился в тексте письма. Просто в НТМЛ есть такой код (7), ну а картинки то нету, как картинку отпрваить?
11 mih_io
 
21.11.12
18:58
если в самом сообщении, то надо чтобы текст сообщения был в виде HTML использовать такую конструкцию
<p style='line-height: 1.15'><img src='C:\pic\image001' width='796' height='464'/></br></p>

адрес картинки конечно условный. но надо сохранить её на диск и в теге дать на неё ссылку. никаких дополнительных танцев с вложением делать не надо
12 Sasha_H
 
21.11.12
18:58
гемор жудкий
13 Sasha_H
 
21.11.12
18:59
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(172)}: Ошибка при вызове метода контекста (Послать)
   Почта.Послать(ПочтовоеСообщение);
по причине:
Файл не обнаружен 'image001'
14 mih_io
 
21.11.12
19:01
ну и к чему ты запостил?

ладно, какая ссылка теге img на картинку?
15 Sasha_H
 
21.11.12
19:03
Это ошибка при НТМЛ строке (7)
16 mih_io
 
21.11.12
19:04
какой путь к картинку говорю у тебя в теге img после src= что написано, прям так как в (7) это неправильно. Там надо писать путь к файлу который лежит на жестком диске
17 Sasha_H
 
21.11.12
19:06
(16) я понял.
Поэтому и написал (12)

Надо еще парсить строки и заменять.

ФорматированныйТекст.ПолучитьHTML(ТекстHTML,Вложения);

ТекстHTML - уже содержит нужный НТМЛ с подстановкой тека на картинку
18 mih_io
 
21.11.12
19:08
Если ты хочешь чтобы картинка была в тексте письма, то только так.

Иначе клади её во вложение
19 Sasha_H
 
21.11.12
19:09
если даже и класть ее во вложения парсить придется в любом случае и удалять
20 Sasha_H
 
21.11.12
19:09
я поняял в чем проблема. буду решать
21 Sasha_H
 
21.11.12
19:20
Спс, подмогли с решением. Если что, вот код!

для каждого КлючИЗначение Из Вложения Цикл
           
           ИмяФайла = КлючИЗначение.Ключ;
           ТипКартинка = КлючИЗначение.Значение;
           АдресВложения = КаталогВременныхФайлов()+ИмяФайла+".jpg";
           ТипКартинка.Записать(АдресВложения);
           
           ТекстHTML = СтрЗаменить(ТекстHTML,"img src='"+ИмяФайла+"'","img src='"+АдресВложения+"'");
           
       КонецЦикла;