Расширение предоставляет возможности отправки и получения потовых сообщений. Сообщения можно отправлять пользователям как из какой-либо обработки, так и через регламент, по какому либо событию (событие каждый разработчик разрабатывает самостоятельно).
Возможности расширения:
- Отправка сообщения по регламенту.
- Отправка сообщений пользователем.
- Сохранение списка отправленных сообщений.
- Удаление старых сообщений.
- Чтение входящей почты.
Каталоги архива:
1. "Расширение для работы обработок", содержит файл с расширением "РасширениеСпамБОТ.cfe",
синоним "Отправка почтовых уведомлений по регламенту"
2. "Обработка отправки почтовых уведомлений", содержит файлы обработок:
а. "СОГ_РассылкаСообщенийПоРегистру.epf" - обработка выполняет роль регламентного задания по отправке почтовых сообщений, на базе БСП. У расширения нет возможности создавать свои собственные регламентные задания.
б. "СОГ_РазослатьКонтрагентамПечатнуюФормуПоСчету.epf" - пример отправки почты пользователем. Позволяет по документу "Счет покупателю" отправлять письма контрагентам с вложением печатных форм. (В примере рассмотрен вариант одной произвольной печатной формы документа, включая внешних)
в. "СОГ_ЧтенияПочтыПоЯщику_Пример.epf" - пример позволяет читать входящую почту, формировать сообщения для отправки по регламенту, работать с 7zip архивами и обрабатывать файлы EXCEL, средствами самого Excel-я.
г. "filedata_2022-09-04.7z" - файл необходим для демонстрации работоспособности обработки "СОГ_ЧтенияПочтыПоЯщику_Пример.epf". Файл архива содержит таблицу EXCEL в формате xml.
1. Интерфейс расширения.
Где:
1) - "Настроить обработку для отправки сообщений (ГГЕ)" - Позволяет прописать список серверов, для отправок и приема почтовых сообщений.
2) - "Общие настройки формы (ГГЕ)" - Представляет из себя регистр сведений "Общие настройки формы (ГГЕ)", записи которого содержит список настроек от различных форм. Позволяет только посмотреть общий список и удалить лишние записи настройки. Добавление новых записей организуется "Разработчиком своих обработок" (программистом) и вручную не добавляются.
3) - "Почтовое сообщение (ГГЕ)" - Представляет из себя регистр сведений, который содержит записи отправленных сообщений по регламенту. Есть возможность так же сохранять записи сообщений, отправленные пользователем. (Все в руках разработчика.)
2. "Настроить обработку для отправки сообщений (ГГЕ)"
Форма настройки.
1) Общие настройки почтового сервера.
Настройки по умолчанию, для тех записей, где не указан сервер.
2) Настройка для удаления старых исходящих сообщений из базы данных.
Период хранения старых записей задается в днях. Дни рассчитываются от даты попытки отправить сообщение.
3) Флажок "Добавить подписи про отправителя" - используется только для отладки.
В конец письма дописывает строчка:
<Дата и время отправки письма> <Имя сервера 1С - (откуда было послано письмо)>.
4) Кнопки отправки и удаления сообщений.
5) Кнопка позволяет упростить воспоминание, когда-то указанного пароля. Кнопка доступна только пользователю с полными правами. (Но если вы за абсолютную безопасность и любите усложнять, удалите эту кнопку.)
6) Табличная часть.
В табличной части указывают настройки с логином и паролем, а так же с дополнительными настройками. Колонки в основном повторяют объект "ИнтернетПочтовыйПрофиль".
Колонки:
"Вкл." - Включает и выключает использование строчки настройки.
"Идентификатор настройки" - Это строка, содержащая 36 символов. Не обязательна к заполнению. Используется для группировок настроек, при отправки писем или чтения почты. Программист (Разработчик) используя этот идентификатор, может конкретно указать, какую настройку будет использовать обработка для отправки писем (или чтения).
"Только по идентификатору" - Ограничение использование строчки настройки. Для обработки сообщает, что данную запись можно использовать только по конкретному идентификатору. Если флажок не указан, то такая настройка может быть использована, как резервная при отправки сообщений.
7) "e-mail Отправителя" - Содержит почтовый адрес, от имени кого будет осуществляться отправка сообщения и получения ответов. Поля имеют второстепенный приоритет. Первичный приоритет указывается программистом, при формировании записи для отправки писем, т.е. если программист не укажет соответствующий параметр при формировании сообщения, то обработка использует поля "e-mail Отправителя", в качестве основного.
8) "Вкл SMTP", "Вкл POP3", "Вкл IMAP" - Соответственно указывают на то, как использовать данную строчку настройки, либо для отправки писем, либо для получения почты, либо отправлять и получать.
Если указать "Вкл POP3" и "Вкл IMAP" приоритет будет отдан для настройки "POP3". Следовательно "IMAP" уже не будет использован.
9) Остальные колонки взяты из объекта "ИнтернетПочтовыйПрофиль" и описание вы сможете прочитать в синтаксис-помощнике.
В обработке объект "ИнтернетПочтовыйПрофиль" вызывается в функции "ПолучитьПочтовыйПрофиль".
ИнтернетПочтовыйПрофиль (InternetMailProfile)
Свойства:
POP3ПередSMTP (POP3BeforeSMTP)АдресСервераIMAP (IMAPServerAddress)
АдресСервераPOP3 (POP3ServerAddress)
АдресСервераSMTP (SMTPServerAddress)
АутентификацияПоТокену (TokenAuthentication)
ИспользоватьSSLIMAP (IMAPUseSSL)
ИспользоватьSSLPOP3 (POP3UseSSL)
ИспользоватьSSLSMTP (SMTPUseSSL)
Пароль (Password)
ПарольIMAP (IMAPPassword)
ПарольSMTP (SMTPPassword)
Пользователь (User)
ПользовательIMAP (IMAPUser)
ПользовательSMTP (SMTPUser)
ПортIMAP (IMAPPort)
ПортPOP3 (POP3Port)
ПортSMTP (SMTPPort)
Таймаут (Timeout)
ТокенДоступа (AccessToken)
ТолькоЗащищеннаяАутентификацияIMAP (IMAPSecureAuthenticationOnly)
ТолькоЗащищеннаяАутентификацияPOP3 (POP3SecureAuthenticationOnly)
ТолькоЗащищеннаяАутентификацияSMTP (SMTPSecureAuthenticationOnly)
Конструкторы:
По умолчаниюОписание:
Набор свойств для соединения с сервером.
Доступность:
Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Сериализуется.
Пример:
Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераPOP3 = POP3Сервер; Профиль.АдресСервераSMTP = SMTPСервер; Если ВремяОжиданияСервера > 0 Тогда Профиль.Таймаут = ВремяОжиданияСервера; КонецЕсли; Профиль.Пароль = Пароль; Профиль.Пользователь = Логин; Профиль.ПортPOP3 = ПортPOP3; Профиль.ПортSMTP = ПортSMTP; Если SMTPАутентификация Тогда Профиль.ПарольSMTP = ПарольSMTP; Профиль.ПользовательSMTP = ЛогинSMTP; КонецЕсли; ИнтернетПочта = Новый ИнтернетПочта; Попытка ИнтернетПочта.Подключиться(Профиль); Исключение Сообщить(ОписаниеОшибки()); Предупреждение("Произошли ошибки при проверке настроек учетной записи. |Описание ошибки приведено в окне сообщения."); Возврат; КонецПопытки; |
См. также:
ИнтернетПочтовыйПрофиль, свойство АдресСервераSMTPИнтернетПочтовыйПрофиль, свойство АдресСервераPOP3
ИнтернетПочтовыйПрофиль, свойство ПортSMTP
ИнтернетПочтовыйПрофиль, свойство ПортPOP3
ИнтернетПочтовыйПрофиль, свойство Пароль
ИнтернетПочта, метод Подключиться
Использование в версии:
Доступен, начиная с версии 8.0.
Для информации:
При отправке сообщений через регламент, могут возникать ошибки. Это может быть ошибка сервера, почтовый сервер может быть недоступен. Или Учетная запись может быть заблокирована, от имени которого отправляются уведомления.
На подобные случай был предусмотрен алгоритм - "Устаревание сообщения".
Алгоритм:
При возникновении ошибок при отправки сообщения, через 100 попыток (с ошибками) и 60 дней, сообщение отмечается, как неактивное и более не будет обрабатываться для отправки.
При этом при каждой ошибке, сообщение будет обработано через час, с момента попытки отправить сообщение.
(Администратор всегда может снять флаг "Не активное" и обнулить счетчики ошибок)
3. "Общие настройки формы (ГГЕ)"
Это регистр сведений, значения которого задаются разработчиком, какой либо обработки.
Создавать записи в списке не предусмотрено, даже копированием, т.к. значение хранится в Хранилище значений. (нет смысла копировать настройку, которая предназначена для какой-то обработки)
Единственное, для чего он нужен список, это удалить настройку из базы, либо посмотреть, а кто и когда менял ту или иную настройку.
4. "Почтовое сообщение (ГГЕ)"
Регистр сведений, записи которые должны быть обработаны регламентным заданием, либо уже отправлены.
Небольшое описание полей:
"ID" - УИД в виде строки, всегда случайный.
"Дата создания" - Дата создания записи в регистре.
"Дата отправки" - Служебное поле, задающая тайминг отправки сообщения. Если не заполнено, то сообщение отправится сразу.
"Не активное" - Флажок указывающий на то, что сообщение было отправлено (либо обработано, и когда-то была попытка отправить сообщение)
"Ошибка" - Флажок указывающий на то, что при отправки была ошибка, и если при этом есть флажок "Не активное", то сообщение не было отправлено и попросту исчерпало все попытки. (по умолчанию задано 100 попыток)
Есть второй контроль, "Устаревание сообщения" фиксируется в момент возникновения ошибки и достижении 60-ти дней с момента "даты создания" до попытки по полю "Дата попытки". "Устаревшее сообщение" более не обрабатывается и помечается, как "Не активное".
"Код ошибки" - содержит последний код ошибки.
"Текст ошибки" - содержит текст последней ошибки.
"Количество попыток" - Количество попыток отправки сообщения. В обработки выставлен лимит попыток, он равен 100.
"Дата попытки" - содержит дату отправки сообщения. При ошибке, содержит дату попытки.
"Идентификатор отправителя" - В настройках обработки для отправки сообщений, это поле так же имеет название "Идентификатор настройки". Идентифицирует настройку отправителя.
"Только этот отправитель" - Флажок, указывает на то, что данное сообщение может быть обработано настройкой с определенным идентификатором. И более ни каким. Если настройка с идентификатором не будет создана, то сообщение отметится, через 100 попыток и 60 дней, как неактивное и более не будет обрабатываться для отправки. (Но администратор всегда может снять флаг "Не активное" и обнулить счетчик ошибок "Количество попыток")
Карточка сообщения.
Вкладки карточки сообщения доступны только для просмотра.
Вкладка "Письмо".
На вкладке можно посмотреть текст темы и текст письма.
Реквизиты в группе "Идентификатор FTP записи" - это служебные поля, и имеет узконаправленный смысл. Можно их не рассматривать и при желании даже удалить (скрыть).
Вкладка "Получателя".
Содержит список получателей сообщения.
Вкладка "Вложение"
Содержит перечень вложений в сообщение. Есть возможность открыть вложение или сохранить на диск. Менять список нельзя.
Вкладка "Отправители почты"
Содержит поля "Идентификатор отправителя" и флажок "Только этот отправитель"
Для информации выведен список отправителей, сформированный из настроек обработки "Отправка почтовых уведомлений по регламенту". Список заполняется полностью, без отбора настроек сообщения. (не пугайтесь)
У расширения отсутствует возможность создавать регламентные задания.
На базе БСП у обработок есть возможность выполнять команду "ВыполнитьКоманду", у которой можно задать периодичность запуска.
Установка обработки:
1. Добавляете обработку в раздел "Дополнительные отчеты и обработки", кнопкой .
2. Выбрав обработку, нажимаете кнопку (записать).
3. Настраиваете расписание в строке "(регламентное задание)"
4. Настройка штатная. Настройка: каждый день; каждые 600 секунд
5. По окончании настройки, нажимаете на кнопку и на кнопку .
В итоге получится вот так:
Для открытии формы обработки как внешнюю, надо выбрать размещение обработки.
Обычно стоит использовать раздел "Администрирование".
Форма обработки:
Как можно видеть, обработка содержит одну кнопку, по нажатию которой выполняется:
- Отправка сообщений, которые записаны в регистр сведений "Почтовое сообщение (ГГЕ)" (без флага "Не активное").
- Удаление старых сообщений, при условии, что в настройках включено удаление устаревших сообщений.
Пример отправки почты пользователем. Позволяет по документу "Счет покупателю" отправлять письма контрагентам с вложением печатных форм. (В примере рассмотрен вариант одной произвольной печатной формы документа, включая внешних)
Для информации:
В обработке есть пункт "Разослать контрагентам печатную форму по Счету (ГГЕ) (регламентное задание)", он добавлен, в качестве шаблона, обработчик автоматической рассылки не написан. Если вам нужна полная автоматизация, то вам придется дописывать самостоятельно.
К сожалению не любая печатная форма документа доступна из обработки.
Форма обработки.
Описание:
1) Указать период, для выбора документов по кнопке .
2) Выбрать печатную форму из списка. Список заполняется при открытии обработки.
детально список можно посмотреть на вкладке "Печатные формы"
3) Указать e-mail отправителя. Не путать с логином на SMTP сервере, это могут быть разные учетные записи.
4) Флажок "Группировать получателей" - при отправке будет сформировано одно общее письмо, на всех получателей по счету.
Если флажок не указан, то будет сформировано столько писем, сколько указано получателей в карточке контрагента.
5) Если необходимо, то выбрать вариант отбора.
6) Если есть контрагенты, кто не получает уведомление, то Заполнить вкладку "Исключения". Возможно указать группу.
7) Заполнить
8) Выбрать нужных контрагентов и нажать кнопку
Пример позволяет читать входящую почту, формировать сообщения для отправки по регламенту, работать с 7zip архивами и обрабатывать файлы EXCEL, средствами самого Excel-я.
Внимание! Нужно сформировать тестовое письмо для обработки.
Так же на сервере 1С должен быть установлен EXCEL.
У каждого свой почтовый сервер, следующее название настройки будем считать обобщенной формой: "bot1c@mail.ru"
1. Написать на адрес "bot1c@mail.ru" письмо с темой "Тестовый пример для обработки"
Прикрепить к файл "filedata_2022-09-04.7z" из архива "Расширение отправки и получения почтовых сообщений.7z"
2. Архив "filedata_2022-09-04.7z" содержит файл "filedata_2022-09-04.xml". Обработка настроена для обработки именно такие вложения.
3. Файл "filedata_2022-09-04.xml" редактируется в EXCEL. И содержит простую таблицу.
Вкладка "Входящая почта" - позволяет просмотреть входящие сообщения e-mail
Вкладка "Настройка" - просто настройка обработки, состоит из трех вкладок.
Настройка "Основная" - настраивается приложение для обработки вложенного архива. Устанавливается условие отбора входящей почты для обработки.
Настройка "Пересылка почты" - Указывается почтовый адрес имя которого будет подставлена в качестве отправителя почтового сообщения. (По задумке, обработка должна полученное письмо обработать, и переслать ответ на другой адрес)
Указывают списки получателей обработанного сообщения.
По окончании настройки нужно нажать кнопку
Настройка "Ошибки" - Указывается настройка для отправки сообщения об ошибках программисту. Так же указывается e-mail программиста.
Вкладка "Настройка истории чтении писем" - На вкладке список обработанных ранее писем.
Обязательно надо заполнить:
- поле "Последняя обработанная дата" - Указать начальную дату, к примеру начало года 01.01.2022.
- поле "Количество дней хранения записей": 365 дней. (365 - для надежности)
По окончании настройки вкладки нажать кнопку .
Вкладка "Настройка хранения ошибок" - На вкладке список ошибок, которые когда либо возникали при работе обработки.
Указать в поле "Количество дней хранения записей" 30 дней. (хотя тут по желанию, но без фанатизма, список ошибок хранится в хранилище значений)
Небольшой список команд, по пунктам: (детально смотрите в картинки - "Форма обработки...")
1. поле "Командная строка внешнего архиватора" - указать командную строку к вашему архиватору 7Zip х64: C:\Program Files\7-Zip\7z.exe e "#1" -p"#2" -o"#3"
Путь для архиватора х32 будет немного другим.
2. поле "Тип файла вложения" - Указать имя расширения архива: 7z
3. Список "Темы писем" - Указать имя тестового письма: Тестовый пример для обработки
Остальные настройки смотрите в многочисленных картинках и делайте, как указано там.
Примеры использования расширения "Отправка почтовых уведомлений по регламенту"
Содержит два примера подготовки сообщения для регламентного задания.
Полный набор параметров:
//Снимем ограничение на обработку...
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
//Настройка идентификации отправителя, по настройкам (в обработке нет ограничения в количестве настроек)
//Если указан идентификатор, то сперва ищется настройка с идентификатором.
// Затем уже в список настроек дополнительно включаются другие настройки,
// которые удовлетворяют условию отбора. (т.е. могут отправлять сообщения по SMTP)
ИдентификаторОтправителя = "<Указать идентификатор настройки>"; //Может быть пуст, чувствителен к регистру, т.е. указать точное наименование настройки.
//Если "Истина" - то для отправки сообщения будет использована настройка с указанным идентификатором.
ТолькоЭтотОтправитель = Ложь; //Ограничивает использование настройки для отправки сообщений.
//Обозначим значения переменных...
ТемаПисьма = "Тема письма, заголовок";
ТекстПисьма = "Текст письма, содержание";
EmailОтправителя = "Mail@mail.ru"; //Можно указать почтовый ящик, который не относится к настройке. Т.е. Получатель будет видеть тот e-mail, какой надо.
EmailОтправителяОтвета = "Mail@mail.ru"; //Можно указать другой почтовый адрес. Отправлять ответ третьему лицу.
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели уведомлений.
// СписокЗначений - где "Значение" - e-mail, "Представление" - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
АдресаУведомленияОДоставке = Неопределено; //Пример по Структуре: ОбработкаСообщений.ПолучитьСтруктуруАдресаПолучателя(); //В структуре указывать только один адрес.
АдресаУведомленияОПрочтении = Неопределено; //Строчки адресов можно перечислять через разделители, к примеру символ ";" (точка с запятой)
//В качестве значений можно указывать:
// Массив - из строк, с полным путем к файлу на диске.
// "Таблицу значений" с колонками: "ИмяФайла" и "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу).
// СписокЗначений - где "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу), "Представление" - Имя файла
// Соответствие - где "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу), Ключ - Имя файла
Вложение = Неопределено;
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели сообщения.
// СписокЗначений - где "Значение" - e-mail, Представление - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
ПолучателиСообщений = "<Указать почтовый адрес получателя>";
Копии = Неопределено; //Может содержать тип такой же как и "ПолучателиСообщений"
СлепыеКопии = Неопределено; //Может содержать тип такой же как и "ПолучателиСообщений"
//Отправим сообщение по регламентному заданию...
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
//Данные для сообщения...
стрСообщение = ОбработкаСообщений.ПолучитьСтруктуруСообщения();
стрСообщение.Тема = ТемаПисьма; //Строка
стрСообщение.Текст = ТекстПисьма; //Строка
стрСообщение.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; //"ТипТекстаПочтовогоСообщения" или Строка значений: "HTML", "ПроизвольныйТекст", "ПростойТекст", "РазмеченныйТекст"
стрСообщение.Организация = "Компания"; //Строка
стрСообщение.EmailОтправителя = EmailОтправителя; //Строка
стрСообщение.EmailОтправителяОтвета = EmailОтправителяОтвета; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
стрСообщение.УведомитьОДоставке = Ложь; //Булево
стрСообщение.УведомитьОПрочтении = Ложь; //Булево
стрСообщение.АдресаУведомленияОДоставке = АдресаУведомленияОДоставке; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
стрСообщение.АдресаУведомленияОПрочтении = АдресаУведомленияОПрочтении; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
//Установить приоритет (важность письма)
стрСообщение.Важность = 0; //Число: от 0 до 5 - Значение из "ПолучитьВажностьСообщения"
//Список получателей Копий писем
стрСообщение.Копии = Копии; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//Список получателей Скрытых Копий писем
стрСообщение.СлепыеКопии = СлепыеКопии; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
//Параметр группирует получателей в одном сообщении
// Отправляет всем получателям (e-mail) одним письмом (в случаи ошибки в адресе получателя, пробует отправить письмо каждому получателю из списка)
// В противном случаи (Ложь), на каждый адрес отправляется отдельное письмо
стрСообщение.ГруппироватьПолучателей = Ложь; //Булево
//
//Параметры не влияют на обработку сообщения, при отправки через регламент.
// И их можно не заполнять...
//
стрСообщение.ДатаСоздания = ТекущаяДата(); //Дата - По умолчанию всегда текущая дата
//
стрСообщение.Ошибка = Ложь; //Булево
стрСообщение.КодОшибки = 0; //Число - как правило ошибка отрицательная
стрСообщение.КоличествоПопыток = 0; //Число
стрСообщение.ДатаПопытки = Дата(1,1,1); //Дата
//
стрСообщение.ИдентификаторОтправителя = ""; //Строка
стрСообщение.ТолькоЭтотОтправитель = Ложь; //Булево
//Конец перечисления служебных параметров
//Структура письма...
стрПисьмо = ОбработкаСообщений.ПолучитьСтруктуруЗаписиСообщения();
стрПисьмо.Сообщение = стрСообщение; //Структура вида "ПолучитьСтруктуруСообщения"
стрПисьмо.Вложение = Вложение; //Массив(Полный путь к файлу на диске), "Таблица значений"(с колонками: "ИмяФайла" и "Значение"), "Список значений", Соответствие.
стрПисьмо.Получатели = ОбработкаСообщений.ПолучитьМассивПолучателейСообщений(ПолучателиСообщений); //Строка, Массив, "Список значений"
//Параметры не влияют на обработку сообщения, при отправки через регламент.
// И их можно не заполнять...
//
//Регистрирует отправленное сообщение в регистре, для отчетности.
// При отправки сообщения пользователем, в Регистре сведений "СОГ_ПочтовоеСообщение", будет зафиксирована запись для информации. (Сохраняет письмо, у записи устанавливает флаг "Не активное")
стрПисьмо.СохранитьСообщениеВРегистре = Ложь; //Только для отправки сообщений пользователем, для регламента игнорируется.
//Конец перечисления служебных параметров
//Добавим запись для отправки сообщения...
ДатаОтправки = Дата(1,1,1); //Отправить сообщение, при первой возможности, без задержки.
ОбработкаСообщений.ДобавитьНовуюЗаписьДляОтправкиСообщений(стрПисьмо, ТемаПисьма, ДатаОтправки, ИдентификаторОтправителя, ТолькоЭтотОтправитель);
Минимальный набор параметров:
//Снимем ограничение на обработку...
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
//Настройка идентификации отправителя, по настройкам
ИдентификаторОтправителя = "<Указать идентификатор настройки>";
ТолькоЭтотОтправитель = Ложь;
//Обозначим значения переменных...
ТемаПисьма = "Тема письма, заголовок";
ТекстПисьма = "Текст письма, содержание";
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели сообщения.
// СписокЗначений - где "Значение" - e-mail, Представление - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
ПолучателиСообщений = "<Указать почтовый адрес получателя>";
//Отправим сообщение по регламентному заданию...
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
//Данные для сообщения...
стрСообщение = ОбработкаСообщений.ПолучитьСтруктуруСообщения();
стрСообщение.Тема = ТемаПисьма; //Строка
стрСообщение.Текст = ТекстПисьма; //Строка
//Параметр "ТипТекста" по умолчанию заполнен значением "HTML".
//стрСообщение.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; //"ТипТекстаПочтовогоСообщения" или Строка значений: "HTML", "ПроизвольныйТекст", "ПростойТекст", "РазмеченныйТекст"
//Структура письма...
стрПисьмо = ОбработкаСообщений.ПолучитьСтруктуруЗаписиСообщения();
стрПисьмо.Сообщение = стрСообщение; //Структура вида "ПолучитьСтруктуруСообщения"
стрПисьмо.Получатели = ОбработкаСообщений.ПолучитьМассивПолучателейСообщений(ПолучателиСообщений); //Строка, Массив, "Список значений"
//Добавим запись для отправки сообщения...
ОбработкаСообщений.ДобавитьНовуюЗаписьДляОтправкиСообщений(стрПисьмо, Неопределено, Неопределено, ИдентификаторОтправителя, ТолькоЭтотОтправитель);
Содержит два примера отправки сообщения пользователем.
Полный набор параметров:
//Снимем ограничение на обработку...
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
//Настройка идентификации отправителя, по настройкам (в обработке нет ограничения в количестве настроек)
//Если указан идентификатор, то сперва ищется настройка с идентификатором.
// Затем уже в список настроек дополнительно включаются другие настройки,
// которые удовлетворяют условию отбора. (т.е. могут отправлять сообщения по SMTP)
ИдентификаторОтправителя = "<Указать идентификатор настройки>"; //Может быть пуст, чувствителен к регистру, т.е. указать точное наименование настройки.
//Если "Истина" - то для отправки сообщения будет использована настройка с указанным идентификатором.
ТолькоЭтотОтправитель = Ложь; //Ограничивает использование настройки для отправки сообщений.
//Обозначим значения переменных...
ТемаПисьма = "Тема письма, заголовок";
ТекстПисьма = "Текст письма, содержание";
EmailОтправителя = "Mail@mail.ru"; //Можно указать почтовый ящик, который не относится к настройке. Т.е. Получатель будет видеть тот e-mail, какой надо.
EmailОтправителяОтвета = "Mail@mail.ru"; //Можно указать другой почтовый адрес. Отправлять ответ третьему лицу.
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели уведомлений.
// СписокЗначений - где "Значение" - e-mail, "Представление" - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
АдресаУведомленияОДоставке = Неопределено; //Пример по Структуре: ОбработкаСообщений.ПолучитьСтруктуруАдресаПолучателя(); //В структуре указывать только один адрес.
АдресаУведомленияОПрочтении = Неопределено; //Строчки адресов можно перечислять через разделители, к примеру символ ";" (точка с запятой)
//В качестве значений можно указывать:
// Массив - из строк, с полным путем к файлу на диске.
// "Таблицу значений" с колонками: "ИмяФайла" и "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу).
// СписокЗначений - где "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу), "Представление" - Имя файла
// Соответствие - где "Значение"(содержит тип: Двоичные данные, Адрес временного хранилища, Путь к файлу), Ключ - Имя файла
Вложение = Неопределено;
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели сообщения.
// СписокЗначений - где "Значение" - e-mail, Представление - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
ПолучателиСообщений = "<Указать почтовый адрес получателя>";
Копии = Неопределено; //Может содержать тип такой же как и "ПолучателиСообщений"
СлепыеКопии = Неопределено; //Может содержать тип такой же как и "ПолучателиСообщений"
//Отправить сообщение Пользователем из обработки...
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
//Данные для сообщения...
стрСообщение = ОбработкаСообщений.ПолучитьСтруктуруСообщения();
стрСообщение.Тема = ТемаПисьма; //Строка
стрСообщение.Текст = ТекстПисьма; //Строка
стрСообщение.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; //"ТипТекстаПочтовогоСообщения" или Строка значений: "HTML", "ПроизвольныйТекст", "ПростойТекст", "РазмеченныйТекст"
стрСообщение.Организация = "Компания"; //Строка
стрСообщение.EmailОтправителя = EmailОтправителя; //Строка
стрСообщение.EmailОтправителяОтвета = EmailОтправителяОтвета; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
стрСообщение.УведомитьОДоставке = Ложь; //Булево
стрСообщение.УведомитьОПрочтении = Ложь; //Булево
стрСообщение.АдресаУведомленияОДоставке = АдресаУведомленияОДоставке; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
стрСообщение.АдресаУведомленияОПрочтении = АдресаУведомленияОПрочтении; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
//Установить приоритет (важность письма)
стрСообщение.Важность = 0; //Число: от 0 до 5 - Значение из "ПолучитьВажностьСообщения"
//Список получателей Копии писем
стрСообщение.Копии = Копии; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//Список получателей Скрытых Копии писем
стрСообщение.СлепыеКопии = СлепыеКопии; //Строка, СписокЗначений(Значение: e-mail, Представление: ФИО), Массив(Строк,Структуры(вида: "ПолучитьСтруктуруАдресаПолучателя"))
//
//Параметр группирует получателей в одном сообщении
// Отправляет всем получателям (e-mail) одним письмом (в случаи ошибки в адресе получателя, пробует отправить письмо каждому получателю из списка)
// В противном случаи (Ложь), на каждый адрес отправляется отдельное письмо
стрСообщение.ГруппироватьПолучателей = Истина; //Булево
//
//Указывается идентификатор настройки, от имени кого будет осуществлена отправка сообщения
стрСообщение.ИдентификаторОтправителя = ИдентификаторОтправителя; //Строка
стрСообщение.ТолькоЭтотОтправитель = ТолькоЭтотОтправитель; //Булево
//Параметры не влияют на обработку сообщения, при отправки пользователем.
// И их можно не заполнять...
//
стрСообщение.ДатаСоздания = ТекущаяДата(); //Дата - По умолчанию всегда текущая дата
//
стрСообщение.Ошибка = Ложь; //Булево
стрСообщение.КодОшибки = 0; //Число - как правило ошибка отрицательная
стрСообщение.КоличествоПопыток = 0; //Число
стрСообщение.ДатаПопытки = Дата(1,1,1); //Дата
//Конец перечисления служебных параметров
//Структура письма...
стрПисьмо = ОбработкаСообщений.ПолучитьСтруктуруЗаписиСообщения();
стрПисьмо.Сообщение = стрСообщение; //Структура вида "ПолучитьСтруктуруСообщения"
стрПисьмо.Вложение = Вложение; //Массив(Полный путь к файлу на диске), "Таблица значений"(с колонками: "ИмяФайла" и "Значение"), "Список значений", Соответствие.
стрПисьмо.Получатели = ОбработкаСообщений.ПолучитьМассивПолучателейСообщений(ПолучателиСообщений); //Строка, Массив, "Список значений"
//
//Регистрирует отправленное сообщение в регистре, для отчетности.
// При отправки сообщения пользователем, в Регистре сведений "СОГ_ПочтовоеСообщение", будет зафиксирована запись для информации. (Сохраняет все письмо, у записи устанавливает флаг "Не активное")
стрПисьмо.СохранитьСообщениеВРегистре = Истина; //Только для отправки сообщений пользователем, для регламента игнорируется.
//Сама отправка сообщения...
Отказ = Ложь;
КодОшибки = 0;
ТекстОшибки = "";
ОбработкаСообщений.ОтправитьСообщения_Пользователем(стрПисьмо, Отказ, КодОшибки, ТекстОшибки);
Если Отказ = Истина Тогда
ТекстСообщения = "Не удалось отправить сообщение через e-mail. Ошибка № "+Строка(КодОшибки)+", "+ТекстОшибки;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
Минимальный набор параметров:
//Снимем ограничение на обработку...
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
//Настройка идентификации отправителя, по настройкам
ИдентификаторОтправителя = "<Указать идентификатор настройки>";
ТолькоЭтотОтправитель = Ложь;
//Обозначим значения переменных...
ТемаПисьма = "Тема письма, заголовок";
ТекстПисьма = "Текст письма, содержание";
//В качестве значений можно указывать:
// Строку, где через ";" перечислены все получатели сообщения.
// СписокЗначений - где "Значение" - e-mail, Представление - Представление получателя)
// Массив - Массив может содержать: Строки адресов, Структуру(вида: "ПолучитьСтруктуруАдресаПолучателя"))
ПолучателиСообщений = "<Указать почтовый адрес получателя>";
//Отправим сообщение по регламентному заданию...
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
//Данные для сообщения...
стрСообщение = ОбработкаСообщений.ПолучитьСтруктуруСообщения();
стрСообщение.Тема = ТемаПисьма; //Строка
стрСообщение.Текст = ТекстПисьма; //Строка
//
//Указывается идентификатор настройки, от имени кого будет осуществлена отправка сообщения
стрСообщение.ИдентификаторОтправителя = ИдентификаторОтправителя; //Строка
стрСообщение.ТолькоЭтотОтправитель = ТолькоЭтотОтправитель; //Булево
//Параметр "ТипТекста" по умолчанию заполнен значением "HTML".
//стрСообщение.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; //"ТипТекстаПочтовогоСообщения" или Строка значений: "HTML", "ПроизвольныйТекст", "ПростойТекст", "РазмеченныйТекст"
//Структура письма...
стрПисьмо = ОбработкаСообщений.ПолучитьСтруктуруЗаписиСообщения();
стрПисьмо.Сообщение = стрСообщение; //Структура вида "ПолучитьСтруктуруСообщения"
стрПисьмо.Получатели = ОбработкаСообщений.ПолучитьМассивПолучателейСообщений(ПолучателиСообщений); //Строка, Массив, "Список значений"
стрПисьмо.СохранитьСообщениеВРегистре = Истина; //Регистрирует отправленное сообщение в регистре, для отчетности.
//Сама отправка сообщения...
Отказ = Ложь;
КодОшибки = 0;
ТекстОшибки = "";
ОбработкаСообщений.ОтправитьСообщения_Пользователем(стрПисьмо, Отказ, КодОшибки, ТекстОшибки);
Если Отказ = Истина Тогда
ТекстСообщения = "Не удалось отправить сообщение через e-mail. Ошибка № "+Строка(КодОшибки)+", "+ТекстОшибки;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;
//Снимем ограничение на обработку...
УстановитьОтключениеБезопасногоРежима(Истина);
УстановитьПривилегированныйРежим(Истина);
//Для чтения входящей почты в настройках должны быть указаны соответствующие "Идентификаторы настроек"
ИдентификаторПолучателя = "<Указать идентификатор настройки>";
ПараметрыСтруктуры = "УстановитьФлагПрочтен, ПоказатьВложения, ИспользоватьОтбор, ОтборБезВложений, УИДФормы, "+
"КоличествоДнейГлубины, РазмерВложения, ТипФайлаВложения, КоличествоВложений, МассивОтправителейОтчета, МассивТемПисем, ПоследняяИсторияЧтенияПисем";
стрНастройки = Новый Структура(ПараметрыСтруктуры);
стрНастройки.УстановитьФлагПрочтен = Ложь; //Для "POP3" всегда Истина. Актуален только для IMAP, для протокола POP3 единственное допустимое значение - Истина.
стрНастройки.ПоказатьВложения = Истина; //При получении письма получаем еще и вложения. Если "Ложь" - фиксируется только количество приложенных файлов.
стрНастройки.ИспользоватьОтбор = Истина; //При чтения письма использовать параметр "Отбор".
стрНастройки.ОтборБезВложений = Ложь; //При использовании "обора", не используется обор по вложению. (Письма отбираются только по заголовку и отправителю)
стрНастройки.УИДФормы = Неопределено; //При использовании параметра "ИспользоватьВХ", вложения помещаются во временное хранилище по указанному УИД-у.
//Настройка для отбора - Если отбор не используется, то не заполнять.
стрНастройки.КоличествоДнейГлубины = 14; //Количество дней в прошлом от текущей даты. Используется для отбора писем по дате отправления входящего сообщения.
стрНастройки.РазмерВложения = 0; //Отбор письма по размеру вложения. Размер в Кб. ("Размер вложения" * 1024)
стрНастройки.ТипФайлаВложения = ""; //Тип допустимого вложения. (Указывать тип, без точки. Нельзя указать не сколько типов)
стрНастройки.КоличествоВложений = 0; //0 - количество вложений не анализируется, иначе выполняет проверку на равное количество вложений в письме.
стрНастройки.МассивОтправителейОтчета = Неопределено; //Массив строк с почтовыми адресами разрешенной входящей почты.
стрНастройки.МассивТемПисем = Неопределено; //Строка или Массив строк разрешенных заголовков писем. (Поиск по части текста)
стрНастройки.ПоследняяИсторияЧтенияПисем = Неопределено; //Таблица значений исключений уже обработанных писем. Пустую таблицу получить из функции: "ПолучитьПустуюТаблицуИсторияЧтенияПисем"
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
ОбработкаСообщений.ОбновитьНастройкиДляВсехНаСервере();
ОбработкаСообщений.СброситьСостояниеОшибок();
стрПолучателя = ОбработкаСообщений.ПолучитьСтруктуруСообщенияПолучателя();
стрПолучателя.ИдентификаторОтправителя = ИдентификаторПолучателя;
стрПолучателя.ТолькоЭтотОтправитель = Истина; //Для чтения почты, параметр всегда имеет значение "Истина".
ТЗ_Получателей = ОбработкаСообщений.ПолучитьТаблицу_ПочтовыеАдресаПолучателей(стрПолучателя);
ИспользоватьОтбор = Истина; //Использовать отбор или нет.
ОтборБезВложений = Истина; //Если "Истина" - то вложения не анализируются и в отборе не участвуют..
стрНастройкиЧтенияПочты = ОбработкаСообщений.ПолучитьНастройкуЧтенияПочты(стрНастройки);
стрНастройкиЧтенияПочты.ПоказатьВложения = Истина;
стрНастройкиЧтенияПочты.ИспользоватьОтбор = ИспользоватьОтбор;
стрНастройкиЧтенияПочты.ОтборБезВложений = ОтборБезВложений;
стрНастройкиЧтенияПочты.ИспользоватьВХ = Истина; //Для Клиента, используется Временное хранилище
//Для отключения отбора по дате отправленного, нужно...
// Код отключает отбор по дате отправления и позволяет получить все письма за весь период
//стрНастройкиЧтенияПочты.Отбор.ПослеДатыОтправления = Неопределено;
//Таблица для логов ошибок...
ТаблицаЛогов = ОбработкаСообщений.ПолучитьПустуюТаблицуЛогов();
ТЗ_НаборыПисем = ОбработкаСообщений.ПрочитатьПисьмаПочты(ТЗ_Получателей, стрНастройкиЧтенияПочты, ТаблицаЛогов, Отказ);
Если ТЗ_НаборыПисем = Неопределено или ТЗ_НаборыПисем.Количество() = 0 Тогда Возврат; КонецЕсли;
//Получим пустую результирующую "Таблицу значений"...
ТЗ_ВходящейПочты = ОбработкаСообщений.ПолучитьПустуюТаблицуВходящейПочты();
Для Каждого СтрокаНП Из ТЗ_НаборыПисем Цикл
ЯщикОпроса = СтрокаНП.ЯщикОпроса;
МассивПисем = СтрокаНП.МассивПисем;
Если МассивПисем = Неопределено Тогда Продолжить; КонецЕсли;
Для Каждого стрПисьма Из МассивПисем Цикл
НоваяСтрока = ТЗ_ВходящейПочты.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,стрПисьма);
НоваяСтрока.ЯщикОпроса = ЯщикОпроса;
Если стрПисьма.Вложения <> Неопределено Тогда
ВложенияВХ = ПоместитьВоВременноеХранилище(стрПисьма.Вложения, ЭтаФорма.УникальныйИдентификатор);
НоваяСтрока.ВложенияВХ = ВложенияВХ;
КонецЕсли;
КонецЦикла;
КонецЦикла;
//Порядок...
ТЗ_ВходящейПочты.Сортировать("ДатаОтправления Убыв, Идентификатор Убыв");
//Заголовок
КоличествоЗаписейВходящейПочты = ТЗ_ВходящейПочты.Количество();
Пример формирования текста для лога ошибок.
//Инициализация обработки...
ОбработкаСообщений = Обработки["СОГ_ОтправкаПочтовыхСообщений"].Создать();
//Таблица для логов ошибок...
ТаблицаЛогов = ОбработкаСообщений.ПолучитьПустуюТаблицуЛогов();
//ТаблицаЛогов - заполняется какими-то данными при выполнении кода в обработках.
// Тут он представлен, как пустая Таблица значений, для понимания, что и откуда взялось.
//Сформируем массив строчек для текста исходящего письма...
МассивТекста = Новый Массив;
ТекстЗаголовка = "Лог ошибок ("+Строка(ТаблицаЛогов.Количество())+")";
//Заголовок...
МассивТекста.Добавить("<h3>"+XMLСтрока(ТекстЗаголовка)+"</h3>");
ТекстТаблицы = "<table border=""1"">";
//Шапка таблицы.
//<th>Ячейка 1</th>
ТекстШапка = "<th></th><th><strong>Дата записи</strong></th><th><strong>Ошибка</strong></th><th><strong>Описание</strong></th>";
ТекстТаблицы = ТекстТаблицы + "
|<tr>
|"+ТекстШапка+"
|</tr>";
СчСтрок = 0;
Для Каждого СтрокаЛога Из ТаблицаЛогов Цикл
СчСтрок = СчСтрок + 1;
ТекстСтрок = "<td>"+XMLСтрока(СчСтрок)+"</td><td align=""left"">"+XMLСтрока(Строка(СтрокаЛога.ДатаЗаписи))+"</td>"+
"<td align=""center"">"+XMLСтрока(?(СтрокаЛога.Ошибка,"V",""))+"</td>"+
"<td align=""left"">"+XMLСтрока(Строка(СтрокаЛога.Описание))+"</td>";
ТекстТаблицы = ТекстТаблицы + "
|<tr>
|"+ТекстСтрок+"
|</tr>";
КонецЦикла;
ТекстТаблицы = ТекстТаблицы + "
|</table>";
//Все одной таблицей...
МассивТекста.Добавить(ТекстТаблицы);
//Перенос строки...
МассивТекста.Добавить("<br/>");
//Отправка письма...
Если МассивТекста.Количество() > 0 Тогда
НаименованиеСервиса_ = "Чтение почты - 'e-mail'";
НаименованиеСервиса = "Лог ошибок обработки - " + НаименованиеСервиса_;
НужнаяСтраница = ""; //Указывается ссылка на страницу
НаименованиеСтраницы = НаименованиеСервиса_;
ЗначениеЯчейки = "<a fr-original-style="""" href="""+НужнаяСтраница+""" rel=""noopener noreferrer"" style=""user-select: auto;"" target=""_blank"">"+XMLСтрока(Строка(НаименованиеСтраницы))+"</a>";
ТекстПисьма = "<h2>"+XMLСтрока(ЗначениеЯчейки)+"</h2>
|<br/>";
МассивТекста.Вставить(0,ТекстПисьма);
//Пример получения темы письма
ТемаПисьма = ""+НаименованиеСервиса;
//Пример получения текста письма в формате HTML
ТекстПисьма = СтрСоединить(МассивТекста,Символы.ПС);
КонецЕсли;
В результате получим письмо:
Тестирование проводилось:
Компонента протестирована на базе конфигурации Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.119.9), релиз 1С:Предприятие 8.3 (8.3.18.1741).