Когда электронное письмо отправляется в очередь, и в CRM есть контакт, связанный с электронным письмом «От», после преобразования электронного письма в действие электронной почты система автоматически заполняет поле «От» контактной информацией.Однако, если в CRM также существует пользователь с таким же адресом электронной почты, то система всегда выбирает пользователя системы вместо контакта.Мне нужно переопределить это поведение, чтобы ВСЕГДА забрать контакт, если контакт с электронной почтой существует.
Я создал плагин после операции (также попробовал плагин перед операцией) для события Createдля электронной почты, пытаясь переопределить поле От.Проблема в том, что это не работает.Когда я отлаживаю плагин, он без ошибок проходит задание, а затем тот же плагин снова запускается для того же электронного письма.И опять.И снова.
Когда я вместо этого пытаюсь создать новое электронное письмо и использовать тот же ActivityList [], который я пытался использовать для объекта, вызвавшего событие, это работает.Кажется, проблема в том, что CRM не позволяет изменить поле From из плагина, или я что-то не так делаю?Если это ограничение применяется CRM, есть ли способ обойти его?
Мой код указан ниже:
var email = ((Entity)context.InputParameters["Target"]).ToEntity<Email>();
...
var oldFrom = ((EntityCollection)email.Attributes["from"]).Entities;
List<ActivityParty> newFrom = new List<ActivityParty>();
foreach (Entity party in oldFrom)
{
EntityReference entRef = (EntityReference)party.Attributes["partyid"];
if (entRef.LogicalName == SystemUser.EntityLogicalName)
user = userLogic.Get(new Guid(entRef.Id.ToString()));
if (user == null) return;
string emailAddress = user.InternalEMailAddress;
Contact contact = contactLogic.LookupPASIndividual("", emailAddress);
if (contact != null)
{ newFrom.Add(new ActivityParty() {PartyId = new EntityReference(Contact.EntityLogicalName, contact.ContactId.Value) });
}
else
return;
}
email.From = newFrom;
Обновление: Итак, я зарегистрировал плагин для предварительной проверки сейчас, и он не запускается, когда маршрутизатор создает активность электронной почты, он срабатывает, когда пользователь создает электронную почту в CRM, хотя ...