2017-09-22 7 views
0

Je transfère mon application vers UWP, et certaines API ne sont pas autorisées dans l'UWP - l'une d'entre elles est l'API de messagerie classique (MAPI).API de messagerie UWP - à partir d'un projet non UWP (mais pont de bureau)

Ce que je trouve est que:

  • UWP expose un nouveau message API
  • Toute demande de référencement des DLL WinRT (mon application est une application de bureau WPF Windows) peuvent utiliser les nouvelles API UWP (y compris le nouvelle API de messagerie). (. BTW UWP anf UI WPF n'est pas compatibile - mais cela est différent histoire et nous ne traitons pas avec cette (multi-plateforme utilisation de l'interface utilisateur) ici)

Je l'ai déjà fait quelques tests successfull avec capteur de lumière (UWP API consommées à partir de l'application de console Windows), et espérait que l'API de messagerie fonctionnera également. Toutefois, lorsque j'exécute ce code simple, il fonctionne lorsqu'il est compilé dans un projet UWP, mais il ne fonctionne pas lorsqu'il est exécuté depuis l'application WPF.

EmailMessage emailMessage = new EmailMessage(); 
emailMessage.To.Add(new EmailRecipient("[email protected]")); 
emailMessage.Body = "message body"; 
await EmailManager.ShowComposeNewEmailAsync(emailMessage); 

Effectué il finit par communiquer: La demande est pas pris en charge Exception de HRESULT (0x80070032)

La question est: Est-ce une limitation connue, que le courrier api exposé par UWP ne sera pas travailler à partir de WPF (ou de tout hôte non-UWP)? Quelqu'un peut-il dire si c'est un comportement général et pas spécifique à mon environnement? (afin de compiler dans le projet WPF, besoin d'ajouter une référence à deux DLL: System.runtime.windowsruntime.dll et Windows.winmd)

J'ai essayé d'appeler l'API de messagerie UWP à la fois à partir de l'application WPF "brute", et l'ayant également empaqueté et installé en tant qu'application UWP de Windows Desktop - j'obtiens le même résultat négatif.

uniquement lorsqu'il est exécuté à partir de l'application UWP le code montre client de messagerie

Merci à l'avance, Michal

Répondre

1

Pouvez-vous utiliser l'URI? Je pense que plus d'URI de support d'application, mais ils ne supportent pas le protocole de messagerie uwp.

Je vais vous dire un moyen facile d'envoyer l'email avec URI. J'écris une fonction qui peut aider à envoyer l'email.

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)); 
    } 

Je pense que c'est facile à utiliser.