Коллеги, подскажите какой приоритет определяется при отправке мультиязычных 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;
}