Plugins 更改插件中电子邮件活动的“发件人”字段

Plugins 更改插件中电子邮件活动的“发件人”字段,plugins,workflow,dynamics-crm-2011,Plugins,Workflow,Dynamics Crm 2011,当电子邮件发送到队列并且CRM中存在与发件人电子邮件关联的联系人时,在将电子邮件升级到电子邮件活动时,系统会自动在发件人字段中填写联系人信息。但是,如果CRM中也存在具有相同电子邮件的用户,则系统总是选择系统用户而不是联系人。如果存在带有电子邮件的联系人,我需要覆盖此行为以始终拾取联系人 我创建了一个操作后插件,也尝试了一个操作前插件,用于创建电子邮件事件,试图覆盖From字段。问题是,它不起作用。当我调试插件时,它会悄悄地通过分配,没有任何错误,然后相同的插件会再次为相同的电子邮件启动。一次又

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

我创建了一个操作后插件,也尝试了一个操作前插件,用于创建电子邮件事件,试图覆盖From字段。问题是,它不起作用。当我调试插件时,它会悄悄地通过分配,没有任何错误,然后相同的插件会再次为相同的电子邮件启动。一次又一次。一次又一次

当我尝试创建一封新的电子邮件并使用与触发事件的实体相同的ActivityList[]时,它起作用了。问题似乎在于CRM不允许从插件更改From字段,或者我做错了什么?如果这是CRM强制实施的限制,有没有办法解决

我的代码如下:

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


更新:所以我现在在预验证中注册了插件,当路由器创建电子邮件活动时它不会被触发,但当用户在CRM中创建电子邮件时它会被触发…

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

var email = ((Entity)context.InputParameters["Target"]).ToEntity<Email>();
此行将当前处理的记录转换为电子邮件类型的对象。您可以修改不在操作范围内的记录。您必须直接修改目标的From或将其写回


对于处理阶段:请查看。预验证是为了尽早完成任务。我不太确定地址解析何时完成,但我会尝试进行预创建转换。

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

谢谢,但我怀疑这是问题所在,因为我使用电子邮件变量在预创建时设置“关于”字段没有问题,而如果我尝试设置“发件人”字段,则会出现错误。我还试图写回inputparameters上下文;但这也没用。
var email = ((Entity)context.InputParameters["Target"]).ToEntity<Email>();