C++ Code:
/* readmail.c */
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <windowsx.h>
#include <mapi.h>
#include <string.h>
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);
}
//====================================================================
Error in Dev C++ compile
[Linker error] undefined reference to `MAPILogon@24'
[Linker error] undefined reference to `MAPIFindNext@28'
[Linker error] undefined reference to `MAPILogoff@16'
[Linker error] undefined reference to `MAPIReadMail@24'
[Linker error] undefined reference to `MAPILogoff@16'
[Linker error] undefined reference to `MAPIFreeBuffer@4'
[Linker error] undefined reference to `MAPIFindNext@28'
[Linker error] undefined reference to `MAPILogoff@16'
[Linker error] undefined reference to `MAPILogoff@16'
ld returned 1 exit status
C:\Dev-Cpp\project4\Makefile.win [Build Error] [Project4.exe] Error 1
Why? and Whatis MAPILogon@24 mean & @16 % @28 ?