【发布时间】:2018-03-04 05:55:47
【问题描述】:
我正在将我的应用程序移植到 UWP,并且 UWP 中不允许使用某些 API - 其中之一是经典邮件 API (MAPI)。
我发现的是:
- UWP 公开了新的邮件 API
- 任何引用某些 WinRT 的应用程序 DLL(我的应用程序是 WPF Windows 桌面应用程序)可以使用新的 UWP API(包括新的邮件 API)。 (顺便说一句。UWP 和 WPF UI 不兼容 - 但这是另一回事,我们不在这里处理这个(跨平台 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)
我尝试从“原始”WPF 应用程序调用 UWP 邮件 api,并将其打包并安装为 Windows 桌面 UWP 应用程序 - 我得到相同的否定结果。
仅当从 UWP 应用程序运行时,代码才会显示邮件客户端
提前致谢, 迈克尔
【问题讨论】:
标签: email uwp mapi desktop-bridge