2016-11-25 94 views

回答

-1

您可以使用共享合同,一些数据发送到兼容的应用程序(包括Outlook)。它允许您与任何兼容的应用程序共享一些文本和数据。

要启动共享,您只需要注册到DataRequested事件并显示共享UI:

DataTransferManager.GetForCurrentView().DataRequested += OnDataRequested; 
DataTransferManager.ShowShareUI(); 

然后,在事件处理程序:

private async void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args) 
{ 
    var deferral = args.Request.GetDeferral(); 

    try 
    { 
     args.Request.Data.Properties.Title   = "Share Title" 
     args.Request.Data.Properties.Description = "Share some data/file"; 
     var file         = await ApplicationData.Current.TemporaryFolder.GetFileAsync("myFileToShare.xxx"); 
     args.Request.Data.SetStorageItems(new IStorageItem[] { logFile }); 
    } 
    catch 
    { 
     args.Request.FailWithDisplayText("Unable to share data"); 
    } 
    finally 
    { 
     deferral.Complete(); 
     sender.DataRequested -= OnDataRequested; 
    } 
} 

一旦完成,系统将显示共享UI,其中用户可以选择他想要的应用程序。这个应用程序将收到发送的数据。

-1

虽然文森特@的答案是完美的,当你想使用分享合同,如果你想使用不仅仅是电子邮件和附加文件,下面是一个简单的方法,我在我的应用程序之一使用。

internal async void ShowEmail(string body, string subject, StorageFile attachment) 
{ 
    EmailMessage email = new EmailMessage(); 
    email.Subject = subject; 
    email.Body = body; 

    var stream = RandomAccessStreamReference.CreateFromFile(attachment); 
    email.SetBodyStream(EmailMessageBodyKind.Html, stream); 

    await EmailManager.ShowComposeNewEmailAsync(email); 
} 

上述方法的例子下来条从Here

+0

这不会工作,如果(a)你有Outlook作为默认的电子邮件应用程序(或任何其他的Win32应用程序)和(b)未启动的Outlook以前或(c)如果您尝试添加附件 – pixel

相关问题