MAPI +outlook

dfeprod - 26 janv. 2001 à 17:48
steph_isis Messages postés 1 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 22 mars 2005 - 22 mars 2005 à 21:46
j'ai une petite appli avec le MAPI qui fonction avec outlook expresse mais avec Outlook 97 ou 2000 au moment de faire li send il plante surement à cause du signeon
comment résoudre ce problème

5 réponses

-------------------------------
Réponse au message :
-------------------------------

j'ai une petite appli avec le MAPI qui fonction avec outlook expresse mais avec Outlook 97 ou 2000 au moment de faire li send il plante surement à cause du signeon
comment résoudre ce problème
-------------------------------
0
-------------------------------
Réponse au message :
-------------------------------

-------------------------------
Réponse au message :
-------------------------------

j'ai une petite appli avec le MAPI qui fonction avec outlook expresse mais avec Outlook 97 ou 2000 au moment de faire li send il plante surement à cause du signeon
comment résoudre ce problème
-------------------------------
0
elendilm Messages postés 21 Date d'inscription mardi 23 juillet 2002 Statut Membre Dernière intervention 14 août 2002
23 juil. 2002 à 13:42
g lu attentivement les liés a MAPI... g u le pb d'envoi de mail avec outlook ou outlook express..

voila 1 source qui permet d'envoyer 1 mail avec outlook, outlook express, testé sous Win95,98,ME,2K,XP.
il utilise 1 fichier texte pour remplir le corps du mail... et pour le moment, ne met pas de piece jointe (mais ca, il suffit d'enlever qques commentaires) .

ensuite, suivant la config d'outlook, le client mail envoi directement ou met en attente dans le outbox le mail. donc je recupere dans la base de registre le client mail par defaut et je le lance:

char email[50];
char Client[25];
HINSTANCE hInst=NULL;
LHANDLE m_hSession=NULL;

MapiMessage Msg;
MapiRecipDesc Dest;
MapiRecipDesc Orig;
MapiFileDesc ReportFile;

BOOL bRet = FALSE;

LPMAPILOGON lpfnMAPILogon = NULL;
LPMAPISENDMAIL lpfnSendMail = NULL;
LPMAPILOGOFF lpfnMAPILogoff = NULL;

ZeroMemory(&Msg, sizeof(MapiMessage));
ZeroMemory(&Dest, sizeof(MapiRecipDesc));
ZeroMemory(&Orig, sizeof(MapiRecipDesc));
ZeroMemory(&ReportFile, sizeof(MapiFileDesc));

// recherche du nom d'utilisateur modem pour reconstituer le nom du fichier
if (GetRecord(TABLESIND,"CLIPPP",&TABLE))
{
sprintf(mesg_erreur,"Erreur %3d GetRecord CLIPPP sur le fichier table %2d",isam_err,isam_fil);
MessageBox(mesg_erreur,"Préparation à la transmission");
}
else
{
if (TABLE.INFO[0] != '0')
{
char fichier_transfert[20];
sprintf(Client,"DISPOR/%s",TABLE.INFO);
sprintf(fichier_transfert,"%.8s",TABLE.INFO);
Supprime_Blancs_Fin(fichier_transfert);
_strlwr(&fichier_transfert[1]);
strcat(fichier_transfert,"_A_Ducros");
remove(fichier_transfert);

if ( ConstitutionFichierTransfert() ) //cree un fichier "Naujourdhui"
{
char nom_fichier[15];
sprintf(nom_fichier,"%ld",Naujourdhui);
if ( rename(nom_fichier,fichier_transfert) == 0)
{
char resultat[300];
// recherche de l'adress e-mail de ducros
if (GetRecord(TABLESIND,"E-MAIL",&TABLE))
{
sprintf(mesg_erreur,"Erreur %3d GetRecord E-MAIL sur le fichier table %2d",isam_err,isam_fil);
MessageBox(mesg_erreur,"Préparation à la transmission");
strcat(resultat,"???");
}
else
{
_strlwr(TABLE.INFO);
sprintf(email,"SMTP:%s",TABLE.INFO);
}
//MessageBox(resultat," Transmission via Internet");

/* Implementation de MAPI mail message */
FILE *Dispor;
Dispor=fopen(fichier_transfert,"r");
if( Dispor == (FILE *) 0)
{
MessageBox("Impossible de trouver le fichier de transfert","Erreur!!",MB_ICONSTOP);
return;
}
fclose(Dispor);

/*
//MapiFileDesc
ReportFile.lpszPathName = fichier_transfert;
ReportFile.lpszFileName = NULL;
ReportFile.nPosition = (ULONG)-1L;
ReportFile.flFlags = MAPI_OLE;

MapiFileTagExt ThisFile;
ThisFile.ulReserved=0;
ThisFile.lpTag=NULL;

ReportFile.lpFileType=&ThisFile;
*/

Dest.ulRecipClass = MAPI_TO;
Dest.lpszName = "ducros";
Dest.lpszAddress = email;

Orig.ulRecipClass = MAPI_ORIG;
Orig.lpszName = "ducros";
Orig.lpszAddress = email;

FILE *fichie=fopen(fichier_transfert,"r");
char *Lu=new char[500];
if(fichie == (FILE*)0 )
{
MessageBox("Erreur critique.. FICHIER DE TRANSFERT INTROUVABLE","Appelez l'informatique HDucros",MB_ICONERROR|MB_OK);
return;
}

static CString Datas;
fgets(Lu,400,fichie);
do
{
Datas+=Lu;
// MessageBox(Lu,"e",MB_OK);
}
while (fgets(Lu,400,fichie) != NULL );

fclose(fichie);

Msg.lpszSubject = Client;
Msg.ulReserved = 0;
Msg.lpszNoteText = Datas.GetBuffer(0);
Msg.nRecipCount = 1;
Msg.lpRecips = &Dest;
Msg.lpOriginator = &Orig;
//Msg.lpszMessageType = "multipart/alternative";
//Msg.nFileCount = 1;
Msg.nFileCount = 0;
//Msg.lpFiles = &ReportFile;
Msg.lpFiles = NULL;
Msg.flFlags = 0;

hInst=LoadLibrary("MAPI32.DLL");

if (hInst == NULL)
{
MessageBox("Outlook Express ou un logiciel client mail "DOIT" etre installé sur votre ordinateur","ERREUR CRITIQUE, prevenir l'informatique chez Hducros",MB_ICONSTOP|MB_OK);
FreeLibrary(hInst);
return;
}
else
{

lpfnMAPILogon = (LPMAPILOGON) GetProcAddress(hInst, "MAPILogon");
lpfnSendMail = (LPMAPISENDMAIL) GetProcAddress(hInst,"MAPISendMail");
lpfnMAPILogoff = (LPMAPILOGOFF) GetProcAddress(hInst, "MAPILogoff");
CString TheMess;
if(lpfnSendMail != NULL && lpfnMAPILogon != NULL && lpfnMAPILogon != NULL)
{
DWORD log=lpfnMAPILogon(NULL,NULL,NULL,MAPI_LOGON_UI ,0,&m_hSession);
if(log != SUCCESS_SUCCESS)
{
FreeLibrary(hInst);
MessageBox("Le client de messagerie semble non (ou mal) installé ou mal configuré.","ERREUR",MB_ICONEXCLAMATION | MB_OK);
return;
}
DWORD tot=lpfnSendMail(m_hSession, 0, &Msg, MAPI_LOGON_UI|MAPI_SIMPLE_DEFAULT , 0);

switch(tot)
{
case SUCCESS_SUCCESS :
MessageBox("Le fichier n'est peut etre pas automatiquement envoyé par votre logiciel de messagerie\nDans ce cas, le mail sera en attente dans votre boite d'envoi\n Verifiez!"
,"INFORMATION",MB_ICONINFORMATION | MB_OK);
break;
case MAPI_E_FAILURE :
MessageBox("Erreur. Aucun compte n'est crée dans votre logiciel de messagerie ou vous avez annulé l'envoi","MAPI_E_FAILURE", MB_ICONERROR|MB_OK);
break;
case MAPI_E_LOGIN_FAILURE:
MessageBox("Mail Erreur..","Mapi login error", MB_ICONEXCLAMATION|MB_OK);
break;
case MAPI_E_TOO_MANY_SESSIONS :
MessageBox("Mail Erreur..","Mapi too many sessions,files,recipients", MB_ICONEXCLAMATION|MB_OK);
break;
case MAPI_E_ATTACHMENT_NOT_FOUND :
MessageBox("Mail Erreur..","Fichier attaché", MB_ICONEXCLAMATION|MB_OK);
break;
case MAPI_E_INVALID_MESSAGE:
MessageBox("Mail Erreur..","Mail invalide", MB_ICONEXCLAMATION|MB_OK);
break;
case MAPI_E_INVALID_SESSION:
MessageBox("Mail Erreur..","Session invalide", MB_ICONERROR|MB_OK);
break;
default:
char ErrorRep[10];
sprintf(ErrorRep,"%d",tot);
MessageBox(ErrorRep,"Prevenir l'informatique HDucros,erreur numero:", MB_ICONERROR|MB_OK);
break;
}

lpfnMAPILogoff(m_hSession,NULL,NULL,NULL);

}
bRet = TRUE;
}
DWORD sort=lpfnMAPILogoff(m_hSession,NULL,NULL,NULL);
FreeLibrary(hInst);
}
else
remove(nom_fichier);
}
}
}
::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
int Resp=MessageBox("Voulez vous lancer votre logiciel de messagerie?","Information",MB_OKCANCEL);
// LANCER LE CLIENT MAPI PAR DEFAUT
if(Resp == IDOK)
{
static HKEY hKey;
static result;
static TCHAR data[MAX_PATH];
static TCHAR szdata[MAX_PATH];
static ULONG dataSize;
CString donne;
DWORD dwDialType = REG_SZ;

dataSize= sizeof(data);
result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,
"Software\\Clients\\Mail",
0,
KEY_QUERY_VALUE,
&hKey);

dataSize=sizeof(data);
if (result == ERROR_SUCCESS)
{
result = ::RegQueryValueEx (hKey,
NULL,
0,
&dwDialType,
(LPBYTE)&data,
&dataSize);

donne.Format ("%s", data);
}
RegCloseKey(hKey);

result = ::RegOpenKeyEx (HKEY_LOCAL_MACHINE,
"Software\\Clients\\Mail\"+ donne + "\\Shell\\Open\\Command",
0,
KEY_QUERY_VALUE,
&hKey);
dataSize=sizeof(data);
if (result == ERROR_SUCCESS)
{
result = ::RegQueryValueEx (hKey,
NULL,
0,
&dwDialType,
(LPBYTE)&data,
&dataSize);

ExpandEnvironmentStrings(data, szdata, MAX_PATH);
donne.Format ("%s", szdata);
}

WinExec(donne,SW_MAXIMIZE);
}
0
elendilm Messages postés 21 Date d'inscription mardi 23 juillet 2002 Statut Membre Dernière intervention 14 août 2002
23 juil. 2002 à 13:49
cf mon post: Re Outlook et MAPI (dsl .. c marqué en VB mais c du C++)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
steph_isis Messages postés 1 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 22 mars 2005
22 mars 2005 à 21:46
Bonjour,

je suis très interressé par votre Script ... et surtout par la démarche utilisée, par contre auriez vous l'équivalent en VB ou VB.NET ???

Merci d'avance.

Steph
0
Rejoignez-nous