从Outlook电子邮件启动Windows窗体

时间:2017-02-07 13:24:27

标签: c# hyperlink outlook

我正在尝试构建一个C#windows应用程序,我需要发送一个指向用户电子邮件地址的链接。单击链接时,应启动Windows窗体。

我尝试使用下面的超链接代码,但我收到错误

string body = "<a> href ="Application.Run(new form1());" > click here </a>

我是C#的新手,请通过点击超链接让我知道如何运行应用程序。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您将无法完成您想要完成的任务,因为这将严重违反安全规定。试想一下有人发送一个启动CMD的超链接并删除磁盘上的文件。

有一个无法违反的沙箱,就像在浏览器中无法访问客户端PC的特定部分一样。 此外,您要完成的任务不仅仅是Outlook问题。如果您发送电子邮件并且某人打开了网络邮件,则您的功能也应该在其他邮件客户端上有效。

对不起。不可能。

答案 1 :(得分:0)

您无法将C#代码注入电子邮件模板并期望它能够正常运行。电子邮件模板纯粹是HTML,而不是IDE或.NET环境 考虑到您的Windows窗体应用程序已安装在用户计算机上,假设 MyApp.exe ,可以执行以下操作。

  1. 创建一个API服务,让您启动该过程:

    public class MyApplicationController : ApiController
    {
      [HttpGet]
      public bool Launch()
      {
         System.Diagnostics.Process.Start("MyApp.exe");
         return true;
      }
    }
    
  2. 将托管API服务的网址作为指向您电子邮件正文的链接。

  3. 虽然还没有测试过,但代码应该可以运行。

答案 2 :(得分:0)

有可能。 您需要将应用程序注册到URI方案。

MSDN声明:

  

要注册应用程序以处理特定URI方案,请将新密钥以及相应的子键和值添加到HKEY_CLASSES_ROOT。根密钥必须与要添加的URI方案匹配。例如,要添加“alert:”方案,请将警报密钥添加到HKEY_CLASSES_ROOT,如下所示:

HKEY_CLASSES_ROOT
    alert
        URL Protocol = ""
  

在此新密钥下,URL协议字符串值指示此密钥声明了自定义可插入协议处理程序。如果没有此密钥,处理程序应用程序将无法启动。该值应为空字符串。   还应为DefaultIcon和shell添加键。 DefaultIcon键的Default字符串值必须是用作此新URI方案的图标的文件名。该字符串采用“path,iconindex”形式,最大长度为MAX_PATH。 shell键下第一个键的名称应该是动作动词,例如open。在此键下,命令键或DDEEXEC键指示应如何调用处理程序。命令和DDEEXEC键下的值描述了如何启动处理新协议的应用程序。   最后,Default字符串值应包含新URI方案的显示名称。

     

以下示例显示如何注册应用程序,在这种情况下为alert.exe,以处理警报方案。

HKEY_CLASSES_ROOT
    alert
        (Default) = "URL:Alert Protocol"
        URL Protocol = ""
        DefaultIcon
            (Default) = "alert.exe,1"
        shell
            open
                command
                    (Default) = "C:\Program Files\Alert\alert.exe" "%1"
  

当用户单击包含您的自定义URI方案的链接时,Windows Internet Explorer将启动为该URI方案注册的可插入协议处理程序。如果注册表中指定的指定open命令包含%1参数,则Internet Explorer会将URI传递给已注册的可插入协议处理程序应用程序。

MSDN:Registering an Application to a URI Scheme

StackOverflow:how do I create my own URL protocol?