12

我正在开发一个 Windows 应用商店应用程序(Windows 8)。

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

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

艾坦B

4

5 回答 5

30

你可以试试

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);
于 2012-10-04T17:12:11.643 回答
9

正确的方法是使用共享。您的应用程序应该创建一个 HTML 文档或文本并共享它。用户将从 Share 魅力中选择 Mail,HTML/Text 将成为电子邮件的正文。

请参阅此处了解更多信息...

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

于 2012-10-04T19:42:09.020 回答
6

这是用于 mailto: 链接的正确语法(与上面使用 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 接收电子邮件。

于 2014-09-03T03:44:31.273 回答
3

如果您正在开发通用 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);

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

问候。

于 2014-10-01T12:59:25.743 回答
1

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

于 2012-10-04T17:13:55.460 回答