Le cas d'utilisation est simple. À un certain moment, je dois être en mesure de montrer à l'utilisateur son dialogue familier Compose de messagerie (Outlook ou autre) avecComment ouvrir la boîte de dialogue de composition/création de courrier à l'aide du client de messagerie par défaut de l'utilisateur?
- champs comme de, à, sujet déjà rempli avec certaines applications valeurs déterminées.
- L'email aurait également une pièce jointe avec elle.
Le courrier ne doit pas être envoyé à moins que l'utilisateur ne l'accepte explicitement.
Je l'ai fait une fois dans les anciens jours 'VB6 .. ne peut pas comprendre comment maintenant .. Je me souviens juste que c'était assez facile.
app Managed, C#, .net 3.0+
Mise à jour # 1: Ouais semble que mailto support enlevé pour les pièces jointes (comme un risque de sécurité?). J'ai essayé
Vous devez inclure la signature ShellExecute as described here. Tout ce que je suis arrivé de c'était un 5 SE_ERR_ACCESSDENIED
et 2 seulement pour une variété
string sMailToLink = @"mailto:[email protected]?subject=Hey&body= yeah yeah yeah";
IntPtr result = ShellExecute(IntPtr.Zero, "open", sMailToLink, "", "", ShowCommands.SW_SHOWNORMAL);
Debug.Assert(result.ToInt32() > 32, "Shell Execute failed with return code " + result.ToInt32());
Le même MailtoLink fonctionne parfaitement avec Process.Start ... mais aussi longtemps que tu ne mentionne les pièces jointes.
System.Diagnostics.Process.Start(sMailToLink);
Les autres options utilisent le modèle d'objet Outlook pour le faire .. mais on m'a dit que cela vous oblige à ajouter des références d'assemblage à base de la version exacte d'Outlook installée. Aussi, cela exploserait si l'utilisateur ne préfère pas MS pour le courrier électronique.
Les options suivantes sont Mapi et quelque chose appelé Mapi33 .. Statut toujours EN COURS. Les oreilles restent ouvertes aux suggestions.
ouais trouvé ce via googler. Cependant ShellExecute ne veut pas me parler maintenant. :) – Gishu