Подготовить шаблон письма с обязательным параметром кода

Учебные задачи

Собственный текст содержит &VerificationCode, а имя пользователя и представление приложения необязательны. Учимся проверять шаблон, не генерируя настоящий код восстановления.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте серверный общий модуль УчебныеЗадачи. Фрагмент вставьте внутрь ВыполнитьПример() Экспорт и вызовите своей учебной командой.

  2. Во всех задачах Новый НастройкиВосстановленияПароля создаёт собственный объект в памяти. Код не устанавливает дополнительные параметры информационной базы и не запускает восстановление пароля.

  3. Не подставляйте реальные SMTP-пароли, OAuth-токены, адреса сотрудников и рабочие ссылки. example.invalid — учебный адрес, не настроенный почтовый сервер.

  4. Каждый пример выполняйте отдельно. Вывод и свойства проверяются в сообщениях/отладчике; доставки письма, изменения пароля и открытия сайта не будет.

Проект = Новый НастройкиВосстановленияПароля;
Проект.СпособВосстановленияПароля = СпособВосстановленияПароляПользователяИнформационнойБазы.Нет;
Проект.Заголовок = "Учебное восстановление доступа";
Проект.ИмяОтправителя = "Учебная поддержка";
Проект.Отправитель = "support@example.invalid";
Проект.ТекстСообщенияHTML = "<html><body><p>Код: &VerificationCode</p><p>Пользователь: &UserPresentation</p><p>База: &ApplicationPresentation</p></body></html>";
Если СтрНайти(Проект.ТекстСообщенияHTML, "&VerificationCode") = 0 Тогда
    ВызватьИсключение "В шаблоне отсутствует обязательный параметр &VerificationCode";
КонецЕсли;
УчебноеИмя = "Ученик <1> & помощник";
БезопасноеИмя = СтрЗаменить(УчебноеИмя, "&", "&amp;");
БезопасноеИмя = СтрЗаменить(БезопасноеИмя, "<", "&lt;");
БезопасноеИмя = СтрЗаменить(БезопасноеИмя, ">", "&gt;");
Предпросмотр = СтрЗаменить(Проект.ТекстСообщенияHTML, "&UserPresentation", БезопасноеИмя);
Предпросмотр = СтрЗаменить(Предпросмотр, "&ApplicationPresentation", "Учебная база");
Сообщить(Проект.Заголовок = "Учебное восстановление доступа");
Сообщить(Проект.ИмяОтправителя = "Учебная поддержка");
Сообщить(Проект.Отправитель = "support@example.invalid");
Сообщить(СтрНайти(Предпросмотр, "&VerificationCode") > 0);
Сообщить(СтрНайти(Предпросмотр, "Ученик &lt;1&gt; &amp; помощник") > 0);
Сообщить(СтрНайти(Предпросмотр, "&UserPresentation") = 0);

Разбор по шагам

  1. Создаём конкретные заголовок, имя и адрес отправителя; адрес принадлежит учебному домену.

  2. В шаблоне оставляем точное имя &VerificationCode. Остальные два параметра необязательны и заменяются платформой при настоящем восстановлении.

  3. Предпросмотр — отдельная строка, не фактический отчёт механизма восстановления. Собственное имя для текстового HTML-узла экранируем в порядке &, <, >.

  4. Код подтверждения в предпросмотр не подставляем, пользовательскую настройку не применяем, письмо не отправляем.

Как проверить результат

  1. Шесть сравнений Истина.

  2. Удалите &VerificationCode из начального шаблона: проверка должна остановить пример.

  3. В Предпросмотр остался параметр кода, а символы <1> не превратились в HTML-тег.

Ожидаемый результат

Подготовлен проверяемый учебный шаблон, где обязательный код отличается от необязательных подписей.

На что обратить внимание

  1. Наше экранирование годится только для текста внутри HTML-узла, не для URL, атрибутов, JavaScript или любого HTML-контекста.

  2. Проверка наличия подстроки не является полной проверкой HTML или доказательством доставки.

  3. Если Отправитель пуст, при отправке значение берётся из ПользовательSMTP; здесь адрес задан явно и отправки нет.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.