Коллеги, подскажите какой приоритет определяется при отправке мультиязычных e-mail сообщений?
1. Заполнен ли на странице контакта язык общения
2.Указан ли язык почтового ящика, с которого отправляется email-сообщение (проверка выполняется только продуктах линейки Service).
3.Заполнена ли системная настройка “Язык сообщений по умолчанию”.
Нравится
По приоритету, см. в статье. Очевидно, как раз по порядку.
По поводу элемента в БП, за раз отправляют одному, при использовании группы обычно в БП идёт цикл.
Александр, спасибо!
Правильно ли я понимаю, что если в строке "Адресаты" указать больше одного лица и один говорит на русском языке, а второй на английском, то bpm отправит всем письма на том языке, кого первого прочитала?
И получится ли сделать так, что одним письмом уйдет группе лиц кому-то на русском, а кому-то на английском?
В элементе «Отправить e-mail» (SendEmailUserTask) я вообще не вижу указания шаблона, там более низкоуровнево: тема и текст. С шаблонами работает блок «Отправить email» (EmailTemplateUserTask). Там логика намного сложнее. Насколько понял, действительно первого в списке получателей. См. в EmailTemplateUserTaskMessageProvider:
protected override (string Body, string Subject) GetEmailContent() { Entity entity = null; if (UserConnection.GetIsFeatureEnabled("EmailTemplateUserTaskMultiLanguageV2")) { entity = GetMultiLanguageTemplate(EmailUserTask.EmailTemplateId, GetTemplateRecipientId(), _emailTemplateUserTaskLanguageIteratorTag); if (UserConnection.GetIsFeatureEnabled("UseMacrosAdditionalParameters")) { EmailUserTask.MacrosExtendedProperties.LanguageId = entity.GetTypedColumnValue<Guid>("LanguageId"); } } else { var templateEsq = GetEmailTemplateContentEsq(EmailUserTask.EmailTemplateId); entity = templateEsq.GetEntityCollection(UserConnection).SingleOrDefault(); } var tempalteSubject = string.Empty; var body = string.Empty; if (entity != null) { body = entity.GetTypedColumnValue<string>("Body"); tempalteSubject = entity.GetTypedColumnValue<string>("Subject"); } string userTaskSubject = GetEmailSubject(); var subject = string.IsNullOrEmpty(userTaskSubject) ? tempalteSubject : userTaskSubject; return (body, subject); } /// <summary> /// Returns recipient identifier from email template user task. /// </summary> /// <returns>Recipient identifier from email template user task.</returns> protected virtual Guid GetTemplateRecipientId() { var regex = new Regex(@"^Recipient\d+$"); BaseProcessSchemaElement userTaskSchema = EmailUserTask.GetSchemaElement(); var processParametersMetaInfo = userTaskSchema as IProcessParametersMetaInfo; if (processParametersMetaInfo == null) { return Guid.Empty; } ProcessSchemaParameterCollection parameters = processParametersMetaInfo.ForceGetParameters(); if (parameters == null || parameters.Count == 0) { return Guid.Empty; } foreach (ProcessSchemaParameter parameter in parameters) { if (regex.IsMatch(parameter.Name) && parameter.DataValueType.IsLookup && parameter.ReferenceSchema != null && parameter.ReferenceSchema.Name == _contactSchemaName) { object propertyValue = EmailUserTask.GetParameterValue(parameter); return (Guid)propertyValue; } } return Guid.Empty; }