UWP邮件API - 来自非UWP项目(但是桌面桥)

时间:2017-09-22 15:35:32

标签: email uwp mapi desktop-bridge project-centennial

我将我的应用程序移植到UWP,并且UWP中不允许使用某些API - 其中一个是经典邮件API(MAPI)。

我发现的是:

  • UWP公开新邮件API
  • 任何引用某些WinRT的应用程序 DLL(我的应用程序是WPF Windows桌面应用程序)可以使用新的UWP API(包括新邮件API)。 (顺便说一句,UWP和WPF UI不兼容 - 但这是不同的故事,我们在这里没有处理这个问题(跨平台用户界面))

我已经使用光传感器(Windows控制台应用程序消耗的UWP API)进行了一些成功的测试,并希望邮件api也能正常工作。但是,当我运行这个简单的代码时 - 它在UWP项目中编译时有效,但是当从WPF应用程序中运行时它不会。

EmailMessage emailMessage = new EmailMessage();
emailMessage.To.Add(new EmailRecipient("someone@gmail.com"));
emailMessage.Body = "message body";
await EmailManager.ShowComposeNewEmailAsync(emailMessage);

运行时最终会进行沟通: 不支持请求来自hresult的异常(0x80070032)

问题是: 这是一个已知的限制,UWP暴露的邮件api无法在WPF(或任何非UWP主机)上运行吗? 谁能说出这是一般行为而不是我的环境特有的? (为了在WPF项目中编译,需要添加对两个DLL的引用:System.runtime.windowsruntime.dll和Windows.winmd)

我试图从" raw"中调用UWP邮件api。 WPF应用程序,并打包并安装为Windows桌面UWP应用程序 - 我得到相同的负面结果。

仅当从UWP应用程序运行时,代码才会显示邮件客户端

提前致谢, 米哈尔

2 个答案:

答案 0 :(得分:3)

我已经了解到,此方案目前不支持Windows.ApplicationModel.Email API。 https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-supported-api

答案 1 :(得分:3)

你能使用URI吗?我认为更多app支持URI,但它们不支持uwp邮件协议。

我会告诉你一个简单的方法来发送带有URI的电子邮件。

我写了一个可以帮助发送电子邮件的功能。

xml.bus.*

我认为这很容易使用。