Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
03 ноя 2024, 19:51

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

Автор Geophysic, 05 мая 2023, 11:15

0 Пользователей и 1 гость просматривают эту тему.

Geophysic

Добрый день, отправляю письмо в формате 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>";

    Возврат ТекстПисьма;
   
КонецФункции

Функция СозданиеИОтправкаПисьма(Адрес, ТекстПисьма)

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

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

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

КонецФункции

antoneus

Отладчик чего говорит? Из функции текст возвращается?

Geophysic

antoneus, Нет, пустое значение возвращает

antoneus

Интересно) А код где расположен? В обработке?

Geophysic

antoneus, Нет, в модуле объекта. Но взял я его из внешней обработки

antoneus

То есть если вот так прямо в отладчике набрать - то прямо пустая строка возвращается и тип Строка?

Geophysic

antoneus, Возвращает вот это: <HTML> ¶<STYLE TYPE = "text/css">¶#s1 {color: #000000; font-family: Arial; font-size: 14px}¶ TH {¶ba
С типом строка

antoneus

Ну вот, а говорите возвращает пустое значение. В строке

Письмо.Тексты.Добавить(ТекстПисьма, ТипТекстаПочтовогоСообщения.HTML);
текст на месте?

Geophysic

antoneus, Там тоже самое возвращает: <HTML> ¶<STYLE TYPE = "text/css">¶#s1 {color: #000000; font-family: Arial; font-size: 14px}¶ TH {¶ba

antoneus

Как-то текст немношк отличается от того, который в функции - там еще дальше, по ходу, стиль для th задается, то есть в письме ожидается таблица. А целиком как текст выглядит?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск