Envoyer un mail avec piece jointe (utilise mapi) en vc++

Contenu du snippet

Envoie un mail avec piece jointe (utilise MAPI).
Programme sous Visual C++ 6.0
ATTENTION : pour fonctionner il faut avoir un compte courrier sur Outlook Express par défaut et bien configuré.
L'adresse de l'expediteur devra etre la meme que sur le compte courrier sous OExpress

Source / Exemple :


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

}

Conclusion :


Pour que l'envoi soit vraiment automatique, désactiver l'otpion "m'avertir lorsque d'autres applications..." dans outil/options.../sécurité de Outlook Express

A voir également

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.