【发布时间】:2014-04-15 15:45:35
【问题描述】:
我正在用 C# WPF 开发一个适用于 Windows 7/8/8.1 的应用程序,为此我需要知道系统默认的邮件客户端是什么。
我搜索了 Stackoverflow 和 Google,我发现的是
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、Yahoo 邮件、ThunderBird 等。
谢谢
德布
【问题讨论】:
-
我认为这可能是help
-
它可能无法正常工作的另一个原因是 mailto: 后面有一个空格。应该有一个电子邮件地址。尝试使用无效字符串启动进程可能没有帮助。