我正在尝试创建一个通过SMTP发送电子邮件的插件。当代码到达SmtpClient client = new SmtpClient(sever);
行时,我收到异常。例外是:
请求获得类型'System.Net.Mail.SmtpPermission,System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。
我测试了SMTP发送电子邮件,它运行正常。 测试代码是:
private void button1_Click(object sender, EventArgs e)
{
string server = "smtp.mail.ex.com";
string to = "ex@ex.com";
string from = "donotreply@ex.com";
MailMessage message = new MailMessage(from, to);
message.Subject = "Using the new SMTP client.";
message.Body = @"Using this new feature, you can send an e-mail message from an application very easily.";
SmtpClient client = new SmtpClient(server);
client.UseDefaultCredentials = false ;
try
{
client.Send(message);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
Console.WriteLine("Exception caught in CreateTestMessage2(): {0}",
ex.ToString());
}
}
这个运行正常,我可以收到电子邮件。为什么它在CRM插件中运行时有安全请求?
答案 0 :(得分:0)
您有可能遇到CRM沙盒行为。
在这个孤立的环境中,也称为沙箱,插件或 自定义活动可以充分利用Microsoft的强大功能 Dynamics CRM SDK用于访问组织Web服务。 访问 文件系统,系统事件日志,某些网络协议, 注册表,在沙箱中阻止更多。
如果您在内部运行,可以尝试在沙箱外注册插件(插件注册工具中的一个选项)。
如果不能在CRM中创建电子邮件记录,并使用现成的行为来发送电子邮件。
答案 1 :(得分:0)
Hu Lydia,在这种情况下,您可以做的就是移动代码将电子邮件发送到Web服务,然后从您的插件调用该Web服务即使插件已在沙箱中注册也应该有效。希望这是有道理的。