Настроил свой БП на обращения. В нем есть отправка письма.
Для отправки письма используется мультиязычный шаблон. Для формирования письча делаю читать данные схемы Case, потом Действие процесса Обработать шаблон письма с макросами (где указан мой шаблон), затем добавляю данные в раздел Активности и далее отправляю письмо скриптом:
var activityId = Get("AddDataID");
if (UserConnection.GetIsFeatureEnabled("UseAsyncEmailSender")) {
AsyncEmailSender emailSender = new AsyncEmailSender(UserConnection);
emailSender.SendAsync(activityId);
} else {
var emailClientFactory = ClassFactory.Get(new ConstructorArgument("userConnection", UserConnection));
var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
activityEmailSender.Send(activityId);
}
return true;Все работает за исключение того, что всегда отправляется только английский вариант письма.
Пример такой настройки взят и стандартного БП Отправка письма при смене статуса обращения.
Вопрос как мне заставить отправлять письмо по настройкам языка получателя?
Нравится
EmailSender скорее всего берет тело сообщения из активности, а там уже лежит текст сообщения на каком то языке.
Почему бы не воспользоваться стандартным блоком "Отправить Email"?
Письмо должно быть привязано в хронологию обращения. К тому делал через отправку стандартным блоком Отправить Email и постоянно какие то ошибки. Не дружу я с ним )
К тому же все стандартные процессы по отправке писем не используют блок Отправить Email, а отправляют скриптами
Попробуй поигратся со сменой языковой культуры перед отправкой
Как то так
cultureId = UserConnection.CurrentUser.SysCultureId;
//cultureId бери из настроек пользователя те тот язык на котором хочешь чтобы было письмо пользователя
esq.SetLocalizationCultureId(cultureId);
Ну или более глобально как то так
userConnection.CurrentUser.SysCultureName = "en-US";
В итоге выяснилось путем тестов. Элемент БП Выполнить действие - - Обработать шаблон письма с макросами не учитывает мультиязычные шаблоны. Делал подмену шаблона из таблицы EmailTemplate на EmailTemplateLang.
var mailTemplateID = Get<Guid>("MailTemplateID");
var usrLangId = Get<Guid>("UserLanguageID")==Guid.Empty
? new Guid("6EBC31FA-EE6C-48E9-81BF-8003AC03B019")
: Get<Guid>("UserLanguageID");
var newMailTemplate = new EmailTemplateStore(UserConnection);
Set<Guid>("MailTemplateID", newMailTemplate.GetTemplate(mailTemplateID, usrLangId).PrimaryColumnValue);
return true;И подавал на вход Элементу Обработать шаблон письма с макросами - результате пустое письмо. Поэтому перешел на другую отправку писем:
var contactEmail = Get<string>("ContactEmail");
var senderEmail = Get<string>("SenderEmail");
var caseId = Get<Guid>("RecordId");
var templateId = Get<Guid>("MailTemplateID");
var emailTemplateMacrosManager = new EmailWithMacrosManager(UserConnection);
emailTemplateMacrosManager.SendEmailFromTo(caseId, templateId, senderEmail, contactEmail);
return true;Хорошо что раздел обращения. Полагаю в другом разделе такая отправка не заработает (