通过Windows 8 metro应用程序发送电子邮件的可用选项?

时间:2012-11-10 05:02:59

标签: email xaml windows-8 microsoft-metro windows-runtime

我正在开发一个Metro应用程序,我有要求: -

我需要通过电子邮件从我的应用程序向最终用户发送一些信息,我通过代码以编程方式生成该电子邮件的信息或内容。

首先我工作的是以这种方式在我的应用程序中启动mailto app : -

using Windows.System;

//starts the default mail app with a subject, cc, bcc, and body
Launcher.LaunchUriAsync(new Uri("mailto:windows8devs@almostbeta.com?subject=Code Request&cc=kevin@almostbeta.com&bcc=admin@almostbeta.com&body=Hi!"));

然后我发现我无法以编程方式将附件附加到此邮件应用程序 如果您以这种方式启动邮件应用程序,请通过代码。

其次,我致力于分享合约,我可以将我的应用程序生成的内容分享给其他应用程序(例如mailto app也是......)

我能够成功分享我的内容,这意味着: -

使用此我可以将文件(我通过代码生成)附加到mailto应用程序,如果我指定邮件地址并发送它工作正常并成功交付)

但是现在我发现如果我使用共享合同来共享文件,我无法设置我正在共享内容的邮件应用的主题或正文。

所以我怀疑: -

1)首先,如果我使用共享合同共享文件,有什么办法可以设置我分享内容的邮件应用的主题或正文吗?

2)我错过了其他任何替代方案/是否有其他可能的方式使用metro app发送电子邮件?

3)如果没有,我可以通过什么方法实现我的目标(发送一封电子邮件,通过该电子邮件我可以通过代码以编程方式附加文件,并设置一个主体,主题设置为它)

提前致谢。

2 个答案:

答案 0 :(得分:2)

我对你有好消息:

  1. 您可以打开Win-RT邮件应用程序并使用mailto准备电子邮件。

    Launcher.LaunchUriAsync(new Uri("mailto:[email]?subject=[subject]&body=[body]?"));

  2. 见1

  3. 最好的选择是将文件上传到某个地方并发送电子邮件,其中包含电子邮件正文中附件的链接
  4. 对于其他邮件属性,请查看:

    http://email.about.com/library/misc/blmailto_encoder.htm

    希望它有所帮助!

答案 1 :(得分:0)

不幸的是,在使用共享合同时,由分享目标决定如何使用您设置的值。你对此没有任何控制权。正如您所注意到的,当您添加附件时,内置邮件客户端不会使用其他共享值。

我能想到的唯一选择是使用SMTP直接从您的代码发送邮件。缺点是.NET for Windows Store应用程序中没有SmtpClient类,我也无法快速找到您可以使用的这个功能的另一个.NET实现,所以看起来你自己就在这里。同样在这种情况下,您需要用户在您的应用程序中配置他的SMTP服务器。

考虑到最好的方法可能是在应用程序的在线组件中发送电子邮件,即您创建服务并将其托管在某个地方。然后,您将应用程序中的邮件数据发送到您的服务,并使用常规.NET SmtpClient从那里发送邮件。