2010-08-13 24 views
1

J'écris une application C# .net qui doit envoyer des messages électroniques en utilisant MAPI. J'utilise la bibliothèque suivante pour réaliser ceci http://www.codeproject.com/KB/IP/SendFileToNET.aspx Voici un exemple de comment je l'utilise.windows live mail mapi support

MAPI mapi = new MAPI(); 
mapi.AddRecipientTo("[email protected]"); 
int returncode = mapi.SendMailPopup("subject", "message"); 
if(returncode==0) 
{ 
MessageBox.Show("User sent message"); 
} 
else if (returncode==1) 
{ 
MessageBox.Show("User abort"); 
} 

Ce morceau de code ouvre une nouvelle boîte de dialogue de message sur le programme de messagerie par défaut et devrait afficher si l'utilisateur décide d'envoyer ou d'annuler l'envoi de l'e-mail.

Ce code fonctionne correctement lorsque vous utilisez Outlook, ce qui signifie qu'il affiche une nouvelle boîte de dialogue et renvoie le code d'erreur correct si l'utilisateur décide par exemple de ne pas envoyer le message en fermant la boîte de dialogue.

Le problème est que l'utilisation de Windows Mail ne fonctionne pas correctement. La boîte de dialogue d'envoi de courrier s'ouvre correctement et l'application suspend son exécution sur mapi.SendMailPopup jusqu'à ce que la boîte de dialogue de courrier soit fermée. Cependant, quel que soit l'utilisateur, mapi.SendMailPopup renvoie toujours zéro. Si l'utilisateur décidait par exemple de fermer la boîte de dialogue de message sans envoyer le message, mapi.SendMailPopup renvoie 0 lorsque la réponse correcte serait 1 (abandon de l'utilisateur).

Ma question est devrait Windows Live Mail ont besoin MAPI support pour cela, et si personne ne quelqu'un peut me dire un autre client de messagerie Windows gratuit qui offre la MAPI support

+0

Microsoft s'efforce de se débarrasser de MAPI. Ce serait un moyen ... –

+0

Quelles sont les alternatives? J'ai besoin d'envoyer des messages électroniques à partir de mon application en utilisant un programme de messagerie externe. – Jargo

+0

L'alternative est soit le modèle d'objet Outlook si vous souhaitez diriger des messages à partir de là et en tirer profit dans les éléments envoyés, à l'aide de signatures et ainsi de suite, ou SMTP. –

Répondre

1

requis C'est confusing-- que La solution .NET est SMAPI, pas MAPI. Je ne suis pas sûr de la fiabilité des valeurs renvoyées par SMAPI, d'autant plus que la valeur renvoyée est renvoyée directement à partir de l'implémentation SMAPI de votre fournisseur MUA par défaut, et qu'il y en a au moins une douzaine. Étant donné que le navigateur n'utilise pas la valeur de retour et qu'ils sont les principaux clients de SMAPI, je ne me fierais pas à lui.

+0

Pouvez-vous me signaler une meilleure implémentation .net mapi. – Jargo

+0

Je ne suis pas sûr quoi d'autre est là-bas. Encore une fois, si cela fonctionne à l'exception de la valeur de retour, ignorez simplement la valeur de retour; Je ne suis pas sûr de savoir à quoi il servirait de toute façon autre que l'enregistrement. –