我正在将我的应用程序移植到UWP,其中一些API在UWP中是不允许的--其中一个是经典的邮件API (MAPI)。
我发现:
我已经用光传感器(从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应用程序运行时,代码才显示邮件客户端。
预先谢谢你,米哈尔
发布于 2017-09-23 13:03:21
你能使用URI吗?我认为更多的应用程序支持URI,但他们不支持uwp邮件协议。
我会告诉你一种用URI发送电子邮件的简单方法。
我写了一个函数,可以帮助发送电子邮件。
private async Task UniversallyEmail(string email, string subject, string messageBody)
{
messageBody = Uri.EscapeDataString(messageBody);
string url = $"mailto:{email}?subject={subject}&body={messageBody}";
await Launcher.LaunchUriAsync(new Uri(url));
}我觉得很容易用。
发布于 2017-09-23 08:13:46
我已经了解到,特别是在这个场景中,目前不支持Windows.ApplicationModel.Email API。https://learn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-supported-api
https://stackoverflow.com/questions/46368341
复制相似问题