Dynamics crm 2011 为什么发送电子邮件插件不工作?

Dynamics crm 2011 为什么发送电子邮件插件不工作?,dynamics-crm-2011,dynamics-crm,crm,dynamics-crm-online,Dynamics Crm 2011,Dynamics Crm,Crm,Dynamics Crm Online,我已经创建了一个插件(使用开发者工具包),它将向参与者发送一封邮件,每当创建参与者时,就会转换成联系人。 但是这个插件不起作用。当我试图调试它时,插件注册工具(SDK)中出现了以下消息 。管道阶段是对创建消息的预验证。 这是我的代码: 受保护的void ExecutePostParticipantCreate(LocalPluginContext localContext) { if(localContext==null) { 抛出新ArgumentNullException(“localCon

我已经创建了一个插件(使用开发者工具包),它将向
参与者
发送一封邮件,每当创建
参与者
时,就会转换成
联系人
。 但是这个插件不起作用。当我试图调试它时,插件注册工具(SDK)中出现了以下消息

。管道阶段是对创建消息的预验证。 这是我的代码:

受保护的void ExecutePostParticipantCreate(LocalPluginContext localContext)
{
if(localContext==null)
{
抛出新ArgumentNullException(“localContext”);
}
//TODO:实现自定义插件业务逻辑。
IPluginExecutionContext context=localContext.PluginExecutionContext;
IOOrganizationService=localContext.OrganizationService;
if(context.InputParameters.Contains(“目标”)&&
context.InputParameters[“Target”]是实体)
{
尝试
{
实体=(实体)上下文。输入参数[“目标”];
if(entity.LogicalName==“新参与者”)
{
Guid联系人id=((EntityReference)entity.Attributes[“新参与者联系人”]).id;
Guid trip_Id=((EntityReference)entity.Attributes[“new_tripparticipants]”).Id;
ColumnSet col1=新列集(“新名称”、“新日期”、“新目的地”);
实体行程=服务。检索(“新行程”,行程Id,col1);
var Trip_name=Trip.Attributes[“new_name”];
var Trip_date=Trip.Attributes[“new_date”];
var Trip_destination=Trip.Attributes[“new_destination”];
string emailBody=“您好,您的”+Trip\u name.ToString()+“预订日期为:“+Trip\u date.ToString()+”;目的地:“+Trip\u Destination.ToString()”;
Guid _userId=context.userId;
ActivityParty fromParty=新ActivityParty
{
PartyId=新的EntityReference(SystemUser.EntityLogicalName,\u userId)
};
ActivityParty TopParty=新ActivityParty
{
PartyId=新实体参考(“新参与者联系”,联系人id)
};
电子邮件=新电子邮件
{
To=新的ActivityParty[]{TopParty},
From=新活动党[]{fromParty},
Subject=Trip\u name.ToString()+“:行程详细信息”,
Description=电子邮件正文,
DirectionCode=true
};
Guid emailID=service.Create(电子邮件);
SendEmailRequest req=新的SendEmailRequest();
req.EmailId=EmailId;
请求TrackingToken=“”;
req.ISSUSEND=真;
SendEmailResponse res=(SendEmailResponse)服务。执行(req);
}
}
捕获(FaultException-ex)
{
抛出新的InvalidPluginExecutionException(“插件中发生错误。”,ex);
}
}
}
我做错什么了吗


谢谢。

我认为第一件事是发现你的插件是否被激活。试着或者习惯于知道这一点。如果你发现你的插件没有被激活,那么代码是不必要的。请注意,CRM Online中插件的部署有一个限制,即仅在沙箱模式下运行。请尝试在CRM Online中部署此插件。

您是否能够使用此处列出的步骤进行调试:


如果没有,您可以添加一些localContext.trace()调用,然后在execute方法的最后抛出一个异常。下载并查看日志文件以查看localContext.trace()的输出。这将使您了解正在发生的事情。

您的代码似乎很好。。。 我注意到您正在向自定义实体发送邮件。。。 您是否在定制过程中启用了“发送电子邮件”选项


你怎么知道插件没有启动?在启动时,我使用SDK pluginregistration工具对该插件进行了评测,但调试没有发生任何事情。看起来还好,是否创建了电子邮件实体但没有发送?如果正在创建但没有发送,则可能是电子邮件路由器出了问题。您是使用web客户端还是Outlook客户端访问CRM?
Profiler> Plug-in AppDomain Created
Profiler> Parsed Profiler File Successfully.
Profiler> Constructor Execution Started: XXXXXXXX
Profiler> Constructor Execution Completed Successfully (Duration = 8ms).
Profiler> Profiler Execution Started: XXXXXXXXXXX
Plug-in> Entered CRMEmailToParticipantsPackage.EmailPlugins.PostParticipantCreate.Execute(), 
Plug-in> Exiting CRMEmailToParticipantsPackage.EmailPlugins.PostParticipantCreate.Execute(),
Profiler> Profiler Execution Completed Successfully (Duration = 57ms).
Profiler> Profiler AppDomain Unloaded