2014-04-15 17 views
0

我正在开发Windows 7/8/8.1在C#WPF中的应用程序,为此我需要知道系统默认邮件客户端是什么。如何检查Windows系统上安装的默认邮件客户端是什么?

我搜索#1和谷歌,我发现了什么是

RegistryKey hklm = Registry.LocalMachine; 
RegistryKey mailClients = hklm.OpenSubKey("SOFTWARE\\Clients\\Mail"); 
string defaultClient = (string)mailClients.GetValue(""); 
    if (defaultClient == null) 
    { 
     MessageBox.Show("Error"); 
     return; 
    } 

    else 
     Process.Start("mailto: " + "?subject=" + SomeSubject + "&body=" + Body); 

但在看到这不是一个最佳的解决方案在Windows系统中检查默认邮件客户端少数情况下。例如,我有一个系统,其中安装了OutLook 2010,当我尝试打开outlook email窗口时,出现错误,"The command line argument is not valid. Verify the switch you are using".有没有找到系统是否具有默认邮件客户端的完美方法。它可以是任何东西时,Outlook,Gmail,雅虎邮件,Thunderbird等

感谢

德布

+0

我认为这可能[帮助](http://stackoverflow.com/questions/15393488/check-default-mail-client-using-c-sharp-code) – Kcvin

+0

其他原因它可能不工作它因为mailto后有一个空格:应该有一个电子邮件地址。试图用无效的字符串开始一个进程可能没有帮助。 – Kcvin

回答

0

我只是尝试这样做,我得到这个错误,因为Outlook 2010的安装了,但从来没有配置解决当系统报告Outlook 2010(也可能是其他版本)时,您会遇到这个问题,找到一种方法来测试客户端是否已配置。 This might be a good start

// KH。

+0

可能是这种情况,但最终用户大多数时间会抱怨的是为什么outlook会抛出这种异常。所以我需要知道如何处理它们? – Debhere

+0

由于您正在使用Process.StandardError属性中将出现该错误的过程http://msdn.microsoft.com/zh-cn/library/vstudio/system.diagnostics.process.standarderror –

相关问题