【发布时间】:2012-05-14 07:22:27
【问题描述】:
我正在尝试从 Metro 应用程序(js 或 c#,没关系)发送电子邮件,共享合同是要走的路吗?据我所知,您无法通过共享合同指定电子邮件的收件人。
【问题讨论】:
标签: email share windows-8 windows-runtime
我正在尝试从 Metro 应用程序(js 或 c#,没关系)发送电子邮件,共享合同是要走的路吗?据我所知,您无法通过共享合同指定电子邮件的收件人。
【问题讨论】:
标签: email share windows-8 windows-runtime
这是正确的。共享合约也可用于其他应用程序,例如 Tweetro,它们不使用电子邮件地址,因此用户必须手动输入电子邮件地址。一个mailto Uri不起作用,它必须是一个有效的Uri,否则不会显示。请参阅http://msdn.microsoft.com/en-US/library/windows/apps/hh465261,了解您可以设置为通过超级按钮共享的所有选项。
【讨论】:
你是对的。没有办法。您可以尝试构建一个 mailto Uri 并启动它
【讨论】:
如果您使用的是 Windows 10,请使用 EmailManager.ShowComposeNewEmailAsync API。它使用下面的 mailto: 协议。
【讨论】:
您可以使用 Uri 方案打开应用,但您需要使用 LaunchUriAsync。此外,设置 LauncherOptions 后,如果用户没有安装应用,Windows 会将他们带到应用商店。
例如,这是我的方法,它只将邮件应用程序打开到屏幕的一侧(我用它来报告错误),或者如果他们安装了 Outlook,它将使用它:
private async Task<bool> ReportErrorMessage(string detailedErrorMessage)
{
var uri = new Uri(string.Format("mailto:email.address@domain.com?subject=Error Report&body={0}", detailedErrorMessage), UriKind.Absolute);
var options = new Windows.System.LauncherOptions
{
DisplayApplicationPicker = true,
DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseLess,
PreferredApplicationPackageFamilyName = "microsoft.windowscommunicationsapps_8wekyb3d8bbwe",
PreferredApplicationDisplayName = "Mail"
};
return await Windows.System.Launcher.LaunchUriAsync(uri, options);
}
对于电子邮件 uri,应用程序已经安装,因此它应该对每个用户都同样有效。此外,如果您知道 FamilyPackageName,您可以设置要使用的首选应用程序。
【讨论】: