Microsoft KB Archive/140337

= PC MAPI: Sample C++ Code to Read Mail Messages =

Article ID: 140337

Article Last Modified on 10/30/2006

-

APPLIES TO


 * Microsoft Mail for PC Networks 3.0
 * Microsoft Mail for PC Networks 3.2
 * Microsoft Mail for PC Networks 3.5

-



This article was previously published under Q140337



SUMMARY
The simple Messaging Application Programming Interface (MAPI) includes a function that allows developers to access a user's mail messages programmatically. The following code illustrates one way that this can be done using Microsoft Visual C++ version 1.5 or another C compiler.



MORE INFORMATION
NOTE: The following code implements MAPI.DLL as a static library. /* readmail.c */


 * 1) include 
 * 2) include 
 * 3) include 
 * 4) include 
 * 5) include 

int readmail;

long err; LHANDLE lhSession; lpMapiMessage FAR *lppMessage; lpMapiMessage lpMessage; char szSeedMessageID[512]; char szMessageID[512]; char szTmp[4096]; char szTmp2[50];

LPSTR lpszSeedMessageID=&szSeedMessageID[0]; LPSTR lpszMessageID=&szMessageID[0];

int main { readmail; return(0); }

int readmail {

/************ Logon  **********************/ err = MAPILogon(0L, "", "", MAPI_LOGON_UI, 0L, &lhSession); if(err != SUCCESS_SUCCESS) {    MessageBox(0, "Error logging on", "Error", MB_OK); return(0); }

/********* Find Messages ********************/ *lpszSeedMessageID = '\0';

// reset MAPIFindNext back to the top again err = MAPIFindNext(lhSession, 0L, "IPM.Microsoft Mail.Note", lpszSeedMessageID, 0L, 0L, lpszMessageID); if(err != SUCCESS_SUCCESS) {     MessageBox(0, "Error finding first message", "Error",      MB_OK); err = MAPILogoff(lhSession, 0L, 0L, 0L); return(0);

}

do { lppMessage=(lpMapiMessage FAR *) &lpMessage; /******** Read Message *************/ err = MAPIReadMail(lhSession, 0L, lpszMessageID,   MAPI_PEEK, 0L, lppMessage); if(err != SUCCESS_SUCCESS) {     MessageBox(0, "Error during message read", "Error",      MB_OK); err = MAPILogoff(lhSession, 0L, 0L, 0L); return(0); }     /******* copy Subject and NoteText into string *************/ if((lpMessage->lpszSubject) != NULL){ _fstrcpy(szTmp2, lpMessage->lpszSubject);    //  Check for NULL strings }     else _fstrcpy(szTmp2,"No subject text"); if((lpMessage->lpszNoteText) != NULL){ if(_fstrlen(lpMessage->lpszNoteText)>4096){  // Check for large message body MessageBox(0, "Message body to large", "MAPI2.C", MB_OK); }      _fstrcpy(szTmp, lpMessage->lpszNoteText); }     else _fstrcpy(szTmp, "No message body"); printf("\nSUBJECT: %s\n", szTmp2); printf("\nNOTETEXT: \n%s\n", szTmp); /****** free memory used by MAPI *********************/ err = MAPIFreeBuffer(lpMessage); if(err != SUCCESS_SUCCESS) {       MessageBox(0, "Error freeing memory", "Error",MB_OK); }   //get next message ID. lstrcpy(lpszSeedMessageID, lpszMessageID); err = MAPIFindNext(lhSession, 0L, "IPM.Microsoft Mail.Note", lpszSeedMessageID, 0L, 0L, lpszMessageID); if(err != SUCCESS_SUCCESS) {     MessageBox(0, "No more messages", "Warning",      MB_OK); err = MAPILogoff(lhSession, 0L, 0L, 0L); return(0); }   lppMessage=(lpMapiMessage FAR *) &lpMessage;

}while(err == SUCCESS_SUCCESS);

/************** Logoff ***************/ err = MAPILogoff(lhSession, 0L, 0L, 0L); return(0); }

Additional query words: 3.00 3.20 3.50 visual basic read mail

Keywords: KB140337

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.