C# 如何调用用户';来自.NET程序的s(非outlook)电子邮件应用程序

C# 如何调用用户';来自.NET程序的s(非outlook)电子邮件应用程序,c#,.net,email,C#,.net,Email,我的C#应用程序需要通过电子邮件将问题报告从用户的计算机发送给支持技术人员。没有通用的SMTP服务器可用,因此我认为我不能使用System.Net.Mail;相反,必须使用用户自己的电子邮件程序和帐户发送消息。我可以使用office automation启动outlook并撰写邮件。但是如果用户没有使用outlook怎么办?多个电子邮件客户端是否支持更通用的机制?或者是否有一个库知道如何检测和调用各种客户端 编辑:由于这是为了提交问题报告,我需要包括附件或(最坏的情况下)一个长消息正文 Proc

我的C#应用程序需要通过电子邮件将问题报告从用户的计算机发送给支持技术人员。没有通用的SMTP服务器可用,因此我认为我不能使用System.Net.Mail;相反,必须使用用户自己的电子邮件程序和帐户发送消息。我可以使用office automation启动outlook并撰写邮件。但是如果用户没有使用outlook怎么办?多个电子邮件客户端是否支持更通用的机制?或者是否有一个库知道如何检测和调用各种客户端

编辑:由于这是为了提交问题报告,我需要包括附件或(最坏的情况下)一个长消息正文

Process.Start("mailto:hurr@durr.com");

该方法将执行特定指令的责任交给操作系统。Windows将识别该方案并启动相应的邮件客户端。这是使用配置的。

如果您想让它与任何电子邮件应用程序一起使用,您可能只需要使用
过程。使用
mailto:
URL开始,URL定义为简短的正文和主题

在一般用途的情况下,这应该起作用:

Process.Start(@"mailto:your@email.com?cc=other@email.com&bcc=stillanother@email.com&subject=Bug Report&body=This may or may not show up.");

但是,邮件客户端经常忽略body标记。不幸的是,对于新行正文使用%0A和新段落使用%0A%0A
邮件中没有通用的方式来获取所有内容。但是如何撰写邮件呢?@Eric:请看我的答案。。。正文有问题,但主题、抄送和密件抄送非常简单。@eric
mailto
方案是一个标准URI,有许多不同的查询/片段部分可用于配置电子邮件。查看RFC了解更多信息:@eric如果您有更具体的要求(如自动发送电子邮件——这是一个糟糕的要求,imho),您必须为特定的电子邮件客户端使用自动化。这比过程要繁重一点。Start可以处理。请记住,您的方法将在用户的客户端中启动电子邮件,但他们仍然必须手动发送电子邮件。@JeffH--我对此很好(事实上我更喜欢),但感谢您的提述;显然,在其他情况下,这将是一个问题。