首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP邮件API -来自非UWP项目(但桌面-桥)

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

Stack Overflow用户
提问于 2017-09-22 15:35:32
回答 2查看 321关注 0票数 0

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

我发现:

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

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

代码语言:javascript
复制
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应用程序运行时,代码才显示邮件客户端。

预先谢谢你,米哈尔

EN

回答 2

Stack Overflow用户

发布于 2017-09-23 13:03:21

你能使用URI吗?我认为更多的应用程序支持URI,但他们不支持uwp邮件协议。

我会告诉你一种用URI发送电子邮件的简单方法。

我写了一个函数,可以帮助发送电子邮件。

代码语言:javascript
复制
    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));
    }

我觉得很容易用。

票数 4
EN

Stack Overflow用户

发布于 2017-09-23 08:13:46

我已经了解到,特别是在这个场景中,目前不支持Windows.ApplicationModel.Email API。https://learn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-supported-api

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46368341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档