#Область ПрограммныйИнтерфейс
// Процедура - Отправить письмо
// АдресЭлектроннойПочты - Строка -
// ТекстСообщения - Строка -
// ТемаСообщения - Строка -
// ДополнительныеПараметрыПисьма - Структура - см. описание аргумента "ПараметрыПисьма" из РаботаСПочтовымиСообщениями.ПодготовитьПисьмо
Процедура ОтправитьПисьмо(АдресЭлектроннойПочты, ТекстСообщения, ТемаСообщения, ДополнительныеПараметрыПисьма = Неопределено) Экспорт
Если ДополнительныеПараметрыПисьма = Неопределено Тогда
ДополнительныеПараметрыПисьма = Новый Структура;
Если Не ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Ложь) Тогда
ЗаписьЖурналаРегистрации("(УЗГА) Рассылка уведомлений на электронную почту",
УровеньЖурналаРегистрации.Ошибка,,,
СтрШаблон("Ошибка отправки сообщения. Адрес ""%1"" не валиден", АдресЭлектроннойПочты));
УчетнаяЗапись = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись();
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", АдресЭлектроннойПочты);
ПараметрыПисьма.Вставить("Тема", ТемаСообщения);
ПараметрыПисьма.Вставить("Тело", ТекстСообщения);
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ПараметрыПисьма, ДополнительныеПараметрыПисьма, Истина);
Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма);
РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо);
ЗаписьЖурналаРегистрации("(УЗГА) Рассылка уведомлений на электронную почту",
УровеньЖурналаРегистрации.Ошибка,,,
СтрШаблон("Ошибка отправки сообщения. Описание ошибки %1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));
// Процедура - Отправить письмо на электронную почту пользователю
// Пользователь - СправочникСсылка.Пользователи -
// ТекстСообщения - Строка -
// ТемаСообщения - Строка -
// ДобавитьОбращение - Булево - Если ИСТИНА, то к тексту сообщения добавится обращение вида "Уважаемый ...!".
// Используйте, если тело сообщения - простой текст. HTML сломает
// ДополнительныеПараметрыПисьма - Структура - см. описание аргумента "ПараметрыПисьма" из РаботаСПочтовымиСообщениями.ПодготовитьПисьмо
Процедура ОтправитьПисьмоПользователю(Пользователь, ТекстСообщения, ТемаСообщения, ДобавитьОбращение = Ложь, ДополнительныеПараметрыПисьма = Неопределено) Экспорт
АдресЭлектроннойПочты = УЗГА_УправлениеКонтактнойИнформацией.АдресЭлектроннойПочтыПользователя(Пользователь);
Если Не ЗначениеЗаполнено(АдресЭлектроннойПочты) Тогда
ЗаписьЖурналаРегистрации("(УЗГА) Рассылка уведомлений на электронную почту",
УровеньЖурналаРегистрации.Ошибка,,,
СтрШаблон("Ошибка отправки сообщения. Не удалось получить адрес электронной почты пользователя %1", Пользователь));
Если ДобавитьОбращение Тогда
ТекстСообщения = СтрШаблон("%1%2%3", ОбращениеКПользователю(Пользователь), Символы.ПС, ТекстСообщения);
ОтправитьПисьмо(АдресЭлектроннойПочты, ТекстСообщения, ТемаСообщения, ДополнительныеПараметрыПисьма);
// Процедура - Отправить письмо на электронную почту списку пользователей
// СписокПользователей - Массив Из СправочникСсылка.Пользователи -
// ТекстСообщения - Строка -
// ТемаСообщения - Строка -
// ДобавитьОбращение - Булево - Если ИСТИНА, то к тексту сообщения добавится обращение вида "Уважаемый ...!"
// Используйте, если тело сообщения - простой текст. HTML сломает
// ДополнительныеПараметрыПисьма - Структура - см. описание аргумента "ПараметрыПисьма" из РаботаСПочтовымиСообщениями.ПодготовитьПисьмо
Процедура ОтправитьПисьмоСпискуПользователей(СписокПользователей, ТекстСообщения, ТемаСообщения, ДобавитьОбращение = Ложь, ДополнительныеПараметрыПисьма = Неопределено) Экспорт
Для Каждого Пользователь Из СписокПользователей Цикл
ОтправитьПисьмоПользователю(Пользователь, ТекстСообщения, ТемаСообщения, ДобавитьОбращение, ДополнительныеПараметрыПисьма);
// Процедура - Отправить HTMLПисьмо пользователю
// Пользователь - СправочникСсылка.Пользователи - Пользователь, кому необходимо отправить сообщение
// HTMLТекстСообщения - Строка - HTML-тело сообщения. Для формирования используйте фунцкию СообщениеHTML()
// ТемаСообщения - Строка - Тема сообщения
// ДополнительныеПараметрыПисьма - Структура - см. описание аргумента "ПараметрыПисьма" из РаботаСПочтовымиСообщениями.ПодготовитьПисьмо
Процедура ОтправитьHTMLПисьмоПользователю(Пользователь, HTMLТекстСообщения, ТемаСообщения, ДополнительныеПараметрыПисьма = Неопределено) Экспорт
Если ДополнительныеПараметрыПисьма = Неопределено Тогда
ДополнительныеПараметрыПисьма = Новый Структура;
ПараметрыHTMLПисьма = Новый Структура;
ПараметрыHTMLПисьма.Вставить("ТипТекста", Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками);
ПараметрыHTMLПисьма.Вставить("ОбрабатыватьТексты", Ложь);
ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(ДополнительныеПараметрыПисьма, ПараметрыHTMLПисьма, Истина);
ОтправитьПисьмоПользователю(Пользователь, HTMLТекстСообщения, ТемаСообщения, Ложь, ДополнительныеПараметрыПисьма);
// Процедура - Отправить HTMLПисьмо по списку пользователей
// СписокПользователей - Массив Из СправочникСсылка.Пользователи - Список пользователей
// HTMLТекстСообщения - Строка - HTML-тело сообщения. Для формирования используйте фунцкию СообщениеHTML()
// ТемаСообщения - Строка - ТЕма сообщения
// ДополнительныеПараметрыПисьма - Структура - см. описание аргумента "ПараметрыПисьма" из РаботаСПочтовымиСообщениями.ПодготовитьПисьмо
Процедура ОтправитьHTMLПисьмоПоСпискуПользователей(СписокПользователей, HTMLТекстСообщения, ТемаСообщения, ДополнительныеПараметрыПисьма = Неопределено) Экспорт
Для Каждого Пользователь Из СписокПользователей Цикл
ОтправитьHTMLПисьмоПользователю(Пользователь, HTMLТекстСообщения, ТемаСообщения, ДополнительныеПараметрыПисьма);
// Функция - Обращение к пользователю
// Пользователь - СправочникСсылка.Пользователи -
// Возвращаемое значение:
// Строка - Возвращает обращение вида "Уважаемый <Фамилия Имя Отчество>" с учетом пола.
// Если не удается определить пол, возвращается "Уважаемый(ая)...",
// если не удается распарсить ФИО, вместо <Фамилия Имя Отчество> выводится "пользователь"
Функция ОбращениеКПользователю(Пользователь) Экспорт
Обращение = "Уважаемый(ая)";
ФИО = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "Наименование", Истина);
Если ЗначениеЗаполнено(ФИО) Тогда
ЧастиИмени = СтрРазделить(ФИО, " ", Ложь);
Если ЧастиИмени.Количество() = 3 Тогда
Отчество = СокрЛП(ЧастиИмени.Получить(2));
Если СтрЗаканчиваетсяНа(НРег(Отчество), "вич") Тогда
ИначеЕсли СтрЗаканчиваетсяНа(НРег(Отчество), "вна") Тогда
Возврат СтрШаблон("%1 %2!", Обращение, ФИО);
#Область СлужебныеПроцедурыИФункции
Функция АдресЭлектроннойПочтыПользователя(Пользователь)
АдресЭлектроннойПочты = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Пользователь,
Справочники.ВидыКонтактнойИнформации.EmailПользователя);
Если ОбщегоНазначенияКлиентСервер.АдресЭлектроннойПочтыСоответствуетТребованиям(АдресЭлектроннойПочты, Ложь) Тогда
Результат = АдресЭлектроннойПочты;