crm plugin smtpclient=new smtpclient() get request for the permission 'System.Net.Mail.SmtpPermissi



我正在尝试创建一个插件来通过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插件中运行时有安全请求?

您很有可能遇到

CRM沙盒行为。

在此隔离环境中,也称为沙盒、插件或 自定义活动可以利用Microsoft的全部功能。 用于访问组织 Web 服务的动态 CRM SDK。访问 文件系统、系统事件日志、某些网络协议、 注册表,以及沙盒中阻止更多内容。

如果您在本地运行,您可以尝试在沙盒之外注册您的插件(插件注册工具中的一个选项)。

如果做不到这一点,您只需在CRM中创建电子邮件记录,并使用开箱即用的行为发送电子邮件。

插件隔离、信任和统计信息

Hu Lydia, 在这种情况下,您可以做的可能是移动代码以将电子邮件发送到 Web 服务,然后从您的插件调用该 Web 服务,即使插件在沙盒中注册,该插件也应该可以工作。希望这是有道理的。

最新更新