0/5 (10 avis)
Snippet vu 17 059 fois - Téléchargée 38 fois
#include <stdafx.h> #include <mapi.h> #include <windows.h> #include <stdio.h> #include <iostream.h> // Définition des fonctions mapi LPMAPILOGON lpfnMAPILogon; LPMAPISENDMAIL lpfnMAPISendMail; LPMAPILOGOFF lpfnMAPILogoff; MapiRecipDesc recipient; MapiRecipDesc sender; MapiFileDesc attach; MapiMessage message; char nomfrom[100], nomto[100], adressefrom[110]="SMTP:", adresseto[100]; char sujet[100], mesg[2000], piece[200]; char add[100]; void main() { LHANDLE lhSession; HANDLE hMAPILib; hMAPILib = LoadLibrary("MAPI32.DLL"); cout<<"Entrez le nom de l'expediteur\n"; cin>>nomfrom; cout<<"Entrez l'adresse de l'expediteur\n"; cin>>add; strcat(adressefrom, add); cout<<"Entrez le nom du destinataire\n"; cin>>nomto; cout<<"Entrez l'adresse du destinataire\n"; cin>>adresseto; cout<<"Entrez le sujet du mail\n"<<flush; fgets(sujet,100,stdin); // les retours à la ligne ne sont pas gérés -> passe a l'action suivante cout<<"Entrez votre message\n"<<flush; fgets(mesg,2000,stdin); cout<<"Entrez le chemin complet de la piece jointe\n"; cout<<"ATTENTION : ne pas oublier l'extension du fichier\n"; cin>>piece; MapiRecipDesc recipient = { 0, MAPI_TO, nomto, adresseto, 0, NULL }; MapiRecipDesc sender = { 0, MAPI_ORIG, nomfrom, adressefrom, 0, NULL }; MapiFileDesc attach = { 0, 0, -1, piece, NULL, NULL }; MapiMessage message = { 0, sujet, mesg, NULL, NULL, NULL, 0, &sender, 1, &recipient, 1, &attach }; lpfnMAPILogon = (LPMAPILOGON)GetProcAddress((HMODULE)hMAPILib, "MAPILogon"); lpfnMAPISendMail = (LPMAPISENDMAIL)GetProcAddress((HMODULE)hMAPILib, "MAPISendMail"); lpfnMAPILogoff = (LPMAPILOGOFF)GetProcAddress((HMODULE)hMAPILib, "MAPILogoff"); (*lpfnMAPILogon)(0, NULL, NULL, NULL, 0, &lhSession); (*lpfnMAPISendMail)(lhSession, 0, &message, 0, 0); (*lpfnMAPILogoff)(lhSession, 0, 0, 0); cout<<("\nMessage envoye !\n"); FreeLibrary((HMODULE)hMAPILib); }
9 mai 2010 à 16:39
23 août 2007 à 16:54
Juste un truc, je viens de m'apercevoir que le code pour formatter le message ne marchait qu'avec MSN hotmail.
Et pas avec Live messenger, outlook express...
Désolé pour l'erreur.
A+
18 mai 2007 à 23:27
Pour ceux que ça interresse, je viens de découvrir une méthode permettant d'envoyer des messages formatés avec ce code.
Voici le code :
mesg est le message formatté à envoyé
et
mesgDepart est le mesage non-formatté
char mesg[31500];
strcpy ( mesg , "<HTML><HEAD>\n<META http-equiv=3DContent-Type content=3D"text/html; =\ncharset=3Diso-8859-1">\n<META content=3D"MSHTML 6.00.6000.16441" name=3DGENERATOR>\n<STYLE></STYLE>\n</HEAD>\n" );
strcat ( mesg , mesgDepart );
strcat ( mesg , "</HTML>" );
Voilà ces 3 à 4 lignes de codes rendent votre texte formatté.
A+
18 mai 2007 à 17:12
j'ai oublier de mettre le morceau de code incriminé,
il provient d'une de mes sources personnelles et est fortement inspiré du code de ENVOYER UN MAIL AVEC PIECE JOINTE (UTILISE MAPI) EN VC++.
Le voilà :
void envoyer(char nomfrom[100], char nomto[100], char adressefromTemp[110], char adresseto[100], char objet[256], char mesg[4096], char piece[1024]) {
LPMAPILOGON lpfnMAPILogon;
LPMAPISENDMAIL lpfnMAPISendMail;
LPMAPILOGOFF lpfnMAPILogoff;
LHANDLE lhSession;
HANDLE hMAPILib;
hMAPILib = LoadLibrary("MAPI32.DLL");
char adressefrom[115] = "SMTP:";
strcat(adressefrom,adressefromTemp);
MapiRecipDesc recipient = {0, MAPI_TO, nomto, adresseto, 0, NULL};
MapiRecipDesc sender = {0, MAPI_ORIG, nomfrom, adressefrom, 0, NULL};
MapiFileDesc attach = {0, 0, -1, piece, NULL, NULL};
MapiMessage message = {0, objet, mesg, NULL, NULL, NULL, 0, &sender, 1, &recipient, 1, &attach};
lpfnMAPILogon = (LPMAPILOGON)GetProcAddress((HMODULE)hMAPILib, "MAPILogon");
lpfnMAPISendMail = (LPMAPISENDMAIL)GetProcAddress((HMODULE)hMAPILib, "MAPISendMail");
lpfnMAPILogoff = (LPMAPILOGOFF)GetProcAddress((HMODULE)hMAPILib, "MAPILogoff");
(*lpfnMAPILogon)(0, NULL, NULL, 0, 0, &lhSession);
(*lpfnMAPISendMail)(lhSession, 0, &message, 0, 0);
(*lpfnMAPILogoff)(lhSession, 0, 0, 0);
FreeLibrary((HMODULE)hMAPILib);
}
18 mai 2007 à 17:08
-----
Comme le dit ma question :
http://www.cppfrance.com/infomsg_PROBLEME-AVEC-MAPISEND-MAIL_944232.aspx
Je ne parvient pas à envoyer un mail avec un expéditeur différent que celui par defaut sur outlook. Si par exemple je met a@b.c, le mail par avec mon adresse de outlook par defaut. Comment faire pour que le message soit bien envoyé avec l'adresse a@b.c?
Je dispose de windows Xp et de Outlook Express 6.
Aidez-moi s'il vous plaît!!!
Merci d'avance et à bientôt.
En tout cas à par ce problème, il s'agit d'une source interressante.
-----
A bientôt.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.