CRM 2011中传入和传出电子邮件的插件

时间:2014-05-09 06:05:15

标签: dynamics-crm-2011 dynamics-crm

我需要为CRM 2011创建两个插件

  1. 每当电子邮件发送或传出时,我都需要检查电子邮件中是否包含任何附件。如果是,我需要将一个布尔值设置为true。

  2. 当用户(仅限用户,不是工作流程或自动消息等)回复某些电子邮件时,我需要启动一个插件来检查事件的状态(电子邮件是关于事件的)并根据状态执行某些操作。

  3. 我对这整个电子邮件跟踪概念并不熟悉。我们配置了一个电子邮件路由器,但这就是我所能说的。

    为了实现所描述的插件,我需要使用哪些步骤?

    对于第一个插件,我认为“创建电子邮件”就够了,对吗?第二个插件怎么样?我怎样才能确保插件只在真人发送电子邮件时被触发?

2 个答案:

答案 0 :(得分:1)

对于第一个插件:

要检查电子邮件的附件,您需要创建一个插件,该插件在创建ActivityMimeAttachment实体时执行,该实体是存储电子邮件附件的实体。

当电子邮件路由器处理入站电子邮件(或在Outlook客户端中跟踪)时,首先创建父电子邮件记录,然后为每个附件创建一个ActivityMimeAttachment记录。

如果您在创建电子邮件时尝试检查附件,则会在创建任何附件之前执行。但是,您可能还需要一个插件,以便在创建电子邮件时执行以设置“具有附件”'字段为false。

ActivityMimeAttachment上的插件需要获取父电子邮件活动并设置'有附件'字段为true。这将处理入站和出站电子邮件。

另请注意,要获得100%的准确性,您可能需要考虑正在撰写电子邮件并添加附件的用户的方案,然后将其删除。这可以通过在删除附件时运行的插件来处理,但该逻辑可能会变得复杂(如果添加了两个附件但只删除了一个附件会怎样?)

有一些有用的示例代码可用于处理ActivityMimeAttachment实体here

对于第二个插件:

在更新电子邮件时执行的插件需要验证以下条件:

  • 电子邮件说明是出站的(用户已回复了电子邮件,例如发送了回复)
  • 电子邮件状态原因已发送(电子邮件实际已发送且未保存为草稿)
  • 电子邮件发件人和/或所有者和/或创建者是真实用户(过滤掉自动和工作流程发送的电子邮件)
  • 关于对象是一个事件

然后,您可以实现所需的自定义验证和逻辑。

第二项可能是使用标准工作流实现的,具体取决于自定义逻辑的复杂程度。如果逻辑对于标准工作流而言过于复杂,则自定义工作流活动也可能有用,因为可以添加其他逻辑或验证而无需编写其他代码。

答案 1 :(得分:0)

对于1.插件:在电子邮件上注册创建和更新(可能用户先创建邮件,然后再更新一些附件)

对于2.插件:检查以下内容:

  • 插件上下文深度应为1(这可确保不会处理由其他插件创建的邮件)
  • 检查由电子邮件实体上的字段创建并由其创建的非技术用户,并且没有人代表创建此邮件的其他用户
  • 检查有关事件的对象点

如果这还不够,并且用户仅通过CRM Web GUI发送邮件,您还可以通过javascript在记录上设置一个特殊标志,以确保邮件是使用gui创建的。然后在插件中检查此状态标志。