Отправляется пустое письмо

1. Geophysic 03.05.23 15:19 Сейчас в теме
Добрый день, отправляю письмо в формате HTML, приходит пустое письмо с темой, подскажите пожалуйста в чем ошибка?
Функция ВыполнитьРассылку(ДатаРассылки) Экспорт
        СписокПолучивших = "";
    
    Если ЭтотОбъект.Документы.Количество() = 0 Тогда
        
        Возврат СписокПолучивших;
        
    КонецЕсли;
    
    МассивМенеджеров = Новый Массив();
    
    Для каждого Стр Из ЭтотОбъект.Документы Цикл
    
        Если Стр.ОК = Истина Тогда
        
            МассивМенеджеров.Добавить(Стр.Сотрудник);    
        
        КонецЕсли;    
    
    КонецЦикла;
    
    // Избавляемся от возможных дублей: 
    МассивМенеджеров = МассивБезДублей(МассивМенеджеров);
    
    ЗаголовокПрограммы = "";
    
    Запрос = Новый Запрос;
    
    Запрос.Текст = 
    
    "ВЫБРАТЬ
    |    ЗС.Значение КАК Значение
    |ИЗ
    |    Константа.ЗаголовокСистемы КАК ЗС";
    
    Рез = Запрос.Выполнить();
    
    Если НЕ Рез.Пустой() Тогда
    
        Выборка = Рез.Выбрать();
        Выборка.Следующий();
        ЗаголовокПрограммы = Выборка.Значение;
    
    КонецЕсли;
    
    Если ЗаголовокПрограммы <> "" Тогда
        
        ЗаголовокПрограммы = "Заголовок" + ЗаголовокПрограммы;    
        
    Иначе    
        
        ЗаголовокПрограммы = "Заголовок";
    
    КонецЕсли;
    
    Для каждого Менеджер Из МассивМенеджеров Цикл
    
        Если Менеджер <> Справочники.Пользователи.ПустаяСсылка() Тогда
                         
            ТекстСписка = "";
            ТекстПисьма = "";
            Адрес       = "";
            
            Счетчик = 1;
            
            Для каждого СтрТЧ Из ЭтотОбъект.Документы Цикл
            
                Если СтрТЧ.ОК И СтрТЧ.Сотрудник = Менеджер Тогда
                    
                    СчетчикСтрока = "" + Строка(Счетчик) + ". ";
                    
                    ТекстСписка = ТекстСписка + СчетчикСтрока + "" + Символы.ПС;
                    
                    Адрес = СтрТЧ.АдресСотрудника;
                    
                    Счетчик = Счетчик + 1;
                    
                КонецЕсли;
            
            КонецЦикла;    
            
            ТекстПисьма = ТекстПисьмаДляСотрудникаВФорматеHTML(Менеджер, ДатаРассылки, ТекстСписка, ЗаголовокПрограммы);

            РезультатОтправки = СозданиеИОтправкаПисьма(Адрес, ТекстПисьма);
            
            Если РезультатОтправки = Истина Тогда
            
                СписокПолучивших = СписокПолучивших + Менеджер + Символы.ПС;    

            КонецЕсли;
            
          КонецЕсли;    
                
        КонецЦикла;        
    Возврат СписокПолучивших;
КонецФункции
Показать

Функция ТекстПисьмаДляСотрудникаВФорматеHTML(Менеджер, ДатаРассылки, ТекстСписка, ЗаголовокПрограммы)

    ТекстПисьма = 
    
    "<HT ML> 
    |<ST YLE TYPE = ""text/css"">
    |#s1 {color: #000000; font-family: Arial; font-size: 14px}
    |</STYLE>
    |<BODY ID=s1>
    |Добрый день, " + Менеджер + ".
    |
    |На " + Формат(ДатаРассылки, "ДФ=dd.MM.yyyy") + " г." + " в информационной базе: " + ЗаголовокПрограммы + "
    |у следующих сотрудников будет отпуск" + " 
    |
    |" + ТекстСписка +  "
    |Автоматическая электронная рассылка " + " 
    |(отвечать на это письмо не требуется)
    |</BODY>
    |</HTML>";

    Возврат ТекстПисьма;
    
КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 03.05.23 15:38 Сейчас в теме
(1)Само сообщение должно быть в виде HTML, по умолчанию оно в виде PlainText.

Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить(ТекстПисьма);
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;
3. Geophysic 03.05.23 15:39 Сейчас в теме
(2) Вот в этой функции у меня это прописано
Функция СозданиеИОтправкаПисьма(Адрес, ТекстПисьма)

    Результат = Неопределено;
    
    // Даём полные права на момент выполнения куска кода 
    // (по умолчанию, до конца функции):
    УстановитьПривилегированныйРежим(Истина);
    
    // Воспользуемся получением системной учетной записи, как в типовой функции:
    // РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
    УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
    
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    //Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись);
    Профиль = ИнтернетПочтовыйПрофиль(УчетнаяЗапись);
    
    ИнтернетПочта  = Новый ИнтернетПочта;

    // ---------------------------------------------------------
    // Непосредственное создание почтового сообщения:
    // ---------------------------------------------------------
    
    Письмо = Новый ИнтернетПочтовоеСообщение;
    
    Текст = Письмо.Тексты.Добавить(ТекстПисьма);    
    Текст.ТипТекста = ТипТекстаПочтовогоСообщения.HTML;
    
    Письмо.Тема = "Изменение статуса заявки"; 
    Письмо.Отправитель = УчетнаяЗапись.АдресЭлектроннойПочты;
    Письмо.ИмяОтправителя = "1С: Предприятие";
    
    Письмо.Получатели.Добавить(Адрес);
    
    // ---------------------------------------------------------
    // Отправка письма:
    // ---------------------------------------------------------
    
    ТекстСообщения = "";
    
    Попытка
        
        ИнтернетПочта.Подключиться(Профиль);
        //ТекстСообщения = "Подключенено";
        ИнтернетПочта.Послать(Письмо);
        //ТекстСообщения = "Уведомление отправлено";
        ИнтернетПочта.Отключиться();
        
        Результат = Истина;
        
    Исключение
        
        ТекстСообщения = "Не удалось подключиться к почтовому серверу !!!";
        Сообщить(ОписаниеОшибки());
        
        Результат = Ложь;
        
    КонецПопытки;
    
    Если ТекстСообщения <> "" Тогда
    
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = ТекстСообщения;
        Сообщение.Поле = "";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        
    КонецЕсли;

    УстановитьПривилегированныйРежим(Ложь);        
    
    Возврат Результат;

КонецФункции
Показать
4. nomad_irk 81 03.05.23 15:45 Сейчас в теме
(3)Вот так работает 100%:
ПочтовоеСообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
5. Geophysic 04.05.23 07:45 Сейчас в теме
(4)То есть мне заменить эту строчку
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; 
на эту?
ПочтовоеСообщение.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
А что за переменная ПочтовоеСообщение?
6. nomad_irk 81 04.05.23 08:14 Сейчас в теме
(5) в ваших реалиях:

Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
7. Geophysic 05.05.23 09:50 Сейчас в теме
(6)Всё равно пустое сообщение отправляется пишу так:
Функция СозданиеИОтправкаПисьма(Адрес, ТекстПисьма)

    Результат = Неопределено;
    
    // Даём полные права на момент выполнения куска кода 
    // (по умолчанию, до конца функции):
    УстановитьПривилегированныйРежим(Истина);
    
    // Воспользуемся получением системной учетной записи, как в типовой функции:
    // РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
    УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
    
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    //Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(УчетнаяЗапись);
    Профиль = ИнтернетПочтовыйПрофиль(УчетнаяЗапись);
    
    ИнтернетПочта  = Новый ИнтернетПочта;

    // ---------------------------------------------------------
    // Непосредственное создание почтового сообщения:
    // ---------------------------------------------------------
    
    Письмо = Новый ИнтернетПочтовоеСообщение;
        Письмо.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
    
    Письмо.Тема = "Заявка клиента"; 
    Письмо.Отправитель = УчетнаяЗапись.АдресЭлектроннойПочты;
    Письмо.ИмяОтправителя = "1С: Предприятие";
    
    Письмо.Получатели.Добавить(Адрес);
    
    // ---------------------------------------------------------
    // Отправка письма:
    // ---------------------------------------------------------
    
    ТекстСообщения = "";
    
    Попытка
        
        ИнтернетПочта.Подключиться(Профиль);
        //ТекстСообщения = "Подключенено";
        ИнтернетПочта.Послать(Письмо);
        //ТекстСообщения = "Уведомление отправлено";
        ИнтернетПочта.Отключиться();
        
        Результат = Истина;
        
    Исключение
        
        ТекстСообщения = "Не удалось подключиться к почтовому серверу !!!";
        Сообщить(ОписаниеОшибки());
        
        Результат = Ложь;
        
    КонецПопытки;
    
    Если ТекстСообщения <> "" Тогда
    
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = ТекстСообщения;
        Сообщение.Поле = "";
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
        
    КонецЕсли;

    УстановитьПривилегированныйРежим(Ложь);        
    
    Возврат Результат;

КонецФункции
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот