我正在开发一个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)如果没有,我可以通过什么方法实现我的目标(发送一封电子邮件,通过该电子邮件我可以通过代码以编程方式附加文件,并设置一个主体,主题设置为它)
提前致谢。
答案 0 :(得分:2)
我对你有好消息:
您可以打开Win-RT邮件应用程序并使用mailto准备电子邮件。
Launcher.LaunchUriAsync(new Uri("mailto:[email]?subject=[subject]&body=[body]?"));
见1
对于其他邮件属性,请查看:
http://email.about.com/library/misc/blmailto_encoder.htm
希望它有所帮助!
答案 1 :(得分:0)
不幸的是,在使用共享合同时,由分享目标决定如何使用您设置的值。你对此没有任何控制权。正如您所注意到的,当您添加附件时,内置邮件客户端不会使用其他共享值。
我能想到的唯一选择是使用SMTP直接从您的代码发送邮件。缺点是.NET for Windows Store应用程序中没有SmtpClient
类,我也无法快速找到您可以使用的这个功能的另一个.NET实现,所以看起来你自己就在这里。同样在这种情况下,您需要用户在您的应用程序中配置他的SMTP服务器。
考虑到最好的方法可能是在应用程序的在线组件中发送电子邮件,即您创建服务并将其托管在某个地方。然后,您将应用程序中的邮件数据发送到您的服务,并使用常规.NET SmtpClient
从那里发送邮件。