【问题标题】:Changing the From field for an email activity in a plug-in更改插件中电子邮件活动的“发件人”字段
【发布时间】:2012-11-30 01:05:41
【问题描述】:

当电子邮件发送到队列并且在 CRM 中存在与“发件人”电子邮件关联的联系人时,在将电子邮件提升为电子邮件活动时,系统会自动使用联系人信息填写“发件人”字段。但是,如果 CRM 中也存在具有相同电子邮件的用户,则系统始终会选择系统用户而不是联系人。如果存在带有电子邮件的联系人,我需要覆盖此行为以始终接听联系人。

我为事件 Create for email 创建了一个操作后插件(也尝试了一个操作前插件),试图覆盖 From 字段。问题是,它不起作用。当我调试插件时,它会安静地通过分配而没有任何错误,然后同一个插件再次为同一个电子邮件触发。然后再次。又一次。

当我尝试创建新电子邮件并使用我尝试用于触发事件的实体的相同 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;

更新:所以我现在在 Pre-validation 上注册了插件,当路由器创建电子邮件活动时它不会触发,但是当用户在 CRM 中创建电子邮件时会触发它...

【问题讨论】:

    标签: plugins workflow dynamics-crm-2011


    【解决方案1】:

    问题是您根本没有更改正在处理的电子邮件。

    var email = ((Entity)context.InputParameters["Target"]).ToEntity<Email>();
    

    此行将当前处理的记录转换为email 类型的对象。您修改了不在操作范围内的记录。您必须修改目标的From(直接或写回)。

    对于处理阶段:查看Event Execution Pipeline。预验证对于您的任务来说太早了。我不太确定地址解析何时完成,但我会尝试进行转换 Pre-Create。

    【讨论】:

    • 谢谢,但我怀疑这是问题所在,因为我使用 email 变量在 Pre-Create 上设置有关字段没有问题,而如果我尝试设置 From 字段,则会出现错误。我还尝试写回输入参数(context.InputParameters["Target"] = email;),但这也无济于事。
    【解决方案2】:

    我最终使用了一种解决方法:如果存在具有相同电子邮件的联系人,则创建一个异步 Post-Event 将电子邮件活动与联系人相关联,将与电子邮件关联的用户留在“发件人”字段中。

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2012-12-07
      相关资源
      最近更新 更多