При разработке внешних обработок и расширений для 1С:Управление торговлей (УТ 11) часто возникает необходимость отправки писем без участия пользователя. Рассмотрим основные способы реализации этой задачи: с помощью объекта платформы ИнтернетПочта и с использованием стандартных механизмов Библиотеки Стандартных Подсистем (БСП).
Данный способ является универсальным для платформы 1С:Предприятие. Для отправки письма необходимо сформировать объект ИнтернетПочтовыйПрофиль, заполнить параметры SMTP-сервера и вызвать методы подключения и отправки.
Рассмотрим вариант с прямым указанием настроек почтового сервера в коде:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.yandex.ru";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПользовательSMTP = "user@yandex.ru";
Профиль.ПарольSMTP = "ПарольПриложения";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Если параметры почты уже настроены в информационной базе, их можно загрузить из справочника УчетныеЗаписиЭлектроннойПочты:
Профиль = Новый ИнтернетПочтовыйПрофиль;
ОсновнаяПочта = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоНаименованию("info@company.ru");
Профиль.АдресСервераSMTP = ОсновнаяПочта.СерверИсходящейПочты;
Профиль.ПользовательSMTP = ОсновнаяПочта.ПользовательSMTP;
Профиль.ПарольSMTP = ОсновнаяПочта.ПарольSMTP;
Профиль.ПортSMTP = ОсновнаяПочта.ПортСервераИсходящейПочты;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ИспользоватьSSLSMTP = Истина;
После формирования профиля выполняем подключение к серверу и отправку подготовленного объекта ИнтернетПочтовоеСообщение. Все сетевые операции обязательно оборачиваем в блок Попытка ... Исключение:
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Почта.Послать(Письмо);
Почта.Отключиться();
Исключение
Сообщить("Не удалось подключиться к почтовому серверу: " + ОписаниеОшибки());
КонецПопытки;
В конфигурациях на БСП (включая УТ 11) предусмотрен типовой документ ЭлектронноеПисьмоИсходящее. Если письмо создается как объект базы данных, нет необходимости вручную настраивать объект ИнтернетПочта.
Проанализируем порядок действий:
ЭлектронноеПисьмоИсходящее (учетная запись, получатели, тема, текст письма и вложенные файлы).Взаимодействия.ВыполнитьОтправкуПисьма(ДокументОбъект).Данная функция автоматически подключится к SMTP-серверу с использованием настроек учетной записи, указанной в документе, отправит письмо и переведет статус документа в состояние «Отправлено».
Для отправки служебных сообщений или уведомлений без сохранения документов в информационной базе используется общий модуль РаботаСПочтовымиСообщениями.
Разберем алгоритм отправки:
РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись().ПараметрыПисьма с ключами Кому, Тема, Тело, ТипТекста и Вложения.РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗапись, ПараметрыПисьма).РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗапись, Письмо).При реализации программной отправки писем обратите внимание на следующие моменты:
&НаСервере).ИспользоватьSSLSMTP = Истина.