如何从WinRT / Windowsapp store应用程序发送电子邮件?

我正在开发Windowsapp store应用程序(Windows 8)。

我需要根据存储在应用程序数据中的数据和地址发送电子邮件,而无需用户输入数据或地址。

实现它的正确/简单方法是什么?

EitanB

正确的方法是使用共享。 您的应用应该创建HTML文档或文本并共享它。 用户将从“共享”超级按钮中选择“邮件”,HTML /文本将成为电子邮件的正文。

有关详情,请参阅此处…

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh973055.aspx

你可以试试

var mailto = new Uri("mailto:?to=recipient@example.com&subject=The subject of an email&body=Hello from a Windows 8 Metro app."); await Windows.System.Launcher.LaunchUriAsync(mailto); 

这是用于mailto:link的正确语法(与上面的其他示例不同,mailto:不正确..)

 var mailto = new Uri("mailto:yourname@email.com?subject=" + subject + "&body=" + body); await Launcher.LaunchUriAsync(mailto); 

mailto:方法的问题是,如果用户没有与mailto关联的客户端程序:什么都不会发生。

最可靠的方法是使用某种Web服务或WCF服务。 在Windows 8上考虑“正确”方式时使用Share Charm并不是最好的,因为用户可能仍然没有安装电子邮件客户端,例如,如果他们依赖gmail.com来收发电子邮件。

如果您正在开发Universal WinRT Windows Phone应用程序,则可以使用“Windows.ApplicationModel.Email.EmailMessage”命名空间,因为“Microsoft.Phone.Tasks.EmailComposeTask”命名空间不适用于WinRT应用程序。

然后,使用此代码创建并启动新电子邮件。

 // Create your new email message. var em = new EmailMessage() ; // Add as much EmailRecipient in it as you need using the following method. em.To.Add(new EmailRecipient("yourname@yourdomain.com")); em.Subject = "Your Subject..."; em.Body = "Your email body..."; // You can add an attachment that way. //em.Attachments.Add(new EmailAttachment(...); // Show the email composer. await EmailManager.ShowComposeNewEmailAsync(em); 

我希望它能解决你(或其他开发人员)的问题。

问候。

始终可以连接到SMTP服务器并发出HELO,MAIL,RCPT等命令。当然,您需要连接到SMTP服务器。 我在公司内部网上使用它来发送电子邮件。