Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Использование форматированного документа в почтовом сообщении в 1С          
Vofka Подменю пользователя
сообщение 14.12.12, 10:36
Сообщение #1

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

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



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

&НаКлиенте
Процедура ОтправитьПочту(Команда)

    Перем HTML, Картинки;

    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = СерверSMTP;
    Профиль.АдресСервераPOP3 = СерверPOP3;
    Профиль.Пользователь = Пользователь;
    Профиль.Пароль = Пароль;

    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Тема = "Форматированный документ ";
    Сообщение.Отправитель = ОтправительПочтовогоСообщения;

    Сообщение.Получатели.Добавить(ПочтовыйАдресОбмена);

    Содержимое.ПолучитьHTML(HTML, Картинки);
    Для Каждого Картинка Из Картинки цикл
        Вложение = Сообщение.Вложения.Добавить(Картинка.Значение.ПолучитьДвоичныеДанные());
        Вложение.Идентификатор = Картинка.Ключ;
        HTML = СтрЗаменить(HTML, Картинка.Ключ, "cid:" + Вложение.Идентификатор);
    КонецЦикла;
    ТекстСообщения = Сообщение.Тексты.Добавить(HTML, ТипТекстаПочтовогоСообщения.HTML);

    Почта = Новый ИнтернетПочта;

    Сообщ = Новый СообщениеПользователю();

    Попытка
        Почта.Подключиться(Профиль);
        Почта.Послать(Сообщение);
    Исключение
        Сообщ.Текст = " - Ошибка при отправке почты: ";
        Сообщ.Сообщить();
        Сообщ.Текст = ОписаниеОшибки();
        Сообщ.Сообщить();
        Возврат;
    КонецПопытки;

    Сообщ.Текст = " Сообщение отправлено. ";
    Сообщ.Сообщить();

    Почта.Отключиться();

    Содержимое.Удалить();

КонецПроцедуры


Для отправки содержимого форматированного документа сначала исполь зуется его метод ПолучитьНТМL(), который получает HTML-составляющие форматированного документа - массив картинок и HTML-текст. Затем полученные картинки добавляются как вложения в почтовое сообщение и сопоставляются с текстом письма путем установки свойства Идентификатор объекта ИнтернетПочтовоеВложение. HTML-текст добавляется в массив текстов почтового сообщения с указанием типа текста ТипТекстаПочтовогоСообщения.НТМL.

Остальная работа по отправке сообщения выполняется с помощью методов Подключиться () и Послать () объекта ИнтернетПочта.
Для чтения сообщения, содержащего форматированный документ, можно использовать следующий фрагмент кода:

&НаКлиенте
Процедура ПолучитьПочту(Команда)

    Перем HTML, Картинки;

    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = СерверPOP3;
    Профиль.Пользователь = Пользователь;
    Профиль.Пароль = Пароль;

    Почта = Новый ИнтернетПочта;

    Сообщ = Новый СообщениеПользователю();

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

    КоличествоСообщений = МассивСообщений.Количество();
    Если КоличествоСообщений = 0 Тогда
        // Сообщений в почтовом ящике нет
        Сообщ.Текст = " - Сообщений в почтовом ящике нет.";
        Сообщ.Сообщить();
        Возврат;
    КонецЕсли;

    ТекстФД.Удалить();

    Для Индекс = 0 По КоличествоСообщений - 1 Цикл

        Сообщ.Текст = "Принято сообщение: " + МассивСообщений[Индекс].Тема;
        Сообщ.Сообщить();

        // выводим содержимое письма в форматированый документ для последнего сообщения
        Если Индекс = КоличествоСообщений - 1 Тогда
            //Картинки = Новый Структура();
            Для каждого Элемент Из МассивСообщений[Индекс].Тексты Цикл
                Если Элемент.ТипТекста = ТипТекстаПочтовогоСообщения.HTML Тогда
                    //отображение тела сообщения в HTML документе
                    ТекстHTML = Элемент.Текст;
                    Если Найти(ТекстHTML, "<HTML>") = 0 Тогда
                        ТекстHTML = "<HTML><BODY>" + ТекстHTML + "</BODY></HTML>";
                    КонецЕсли;

                    //отображение тела сообщения в форматированном документе
                    //HTML = Элемент.Текст;
                    //Для каждого Вложение Из МассивСообщений[Индекс].Вложения Цикл
                    //НомерКартинки = 1;
                    //КартинкаВложения = Новый Картинка(Вложение.Данные);
                    //Если КартинкаВложения <> Неопределено Тогда
                    //Имя = "img" + НомерКартинки;
                    //НомерКартинки = НомерКартинки + 1;
                    //Картинки.Вставить(Имя, КартинкаВложения);
                    //HTML = СтрЗаменить(HTML, "cid:" + Вложение.Идентификатор, Вложение.Имя);
                    //КонецЕсли;
                    //КонецЦикла;
                    //РаботаСДанными.УстановитьТекстHTML(ТекстФД, HTML, Картинки);
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;

    КонецЦикла;

    Почта.Отключиться();    

КонецПроцедуры


Для отображения содержимого полученного сообщения используется элемент формы ТекстНТМ1_ вида Поле HTML документа, связанный с соответствующим строковым реквизитом формы. В этот реквизит помещается HTML- текст прочитанного сообщения.

Спасибо сказали: shurik_shurik,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 14:22
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!