Click here to Skip to main content
15,909,498 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: CSocket and CWinThread Pin
vcplusplus27-Oct-03 1:50
vcplusplus27-Oct-03 1:50 
QuestionHow to change the font size and color of the fonts in a edit box Pin
Deepak Samuel27-Oct-03 0:00
Deepak Samuel27-Oct-03 0:00 
AnswerRe: How to change the font size and color of the fonts in a edit box Pin
Steve S27-Oct-03 1:37
Steve S27-Oct-03 1:37 
GeneralOutlook Automation (C++) Pin
chz171065xy26-Oct-03 23:20
chz171065xy26-Oct-03 23:20 
GeneralRe: Outlook Automation (C++) Pin
Heath Stewart27-Oct-03 3:24
protectorHeath Stewart27-Oct-03 3:24 
GeneralRe: Outlook Automation (C++) Pin
chz171065xy27-Oct-03 21:37
chz171065xy27-Oct-03 21:37 
GeneralRe: Outlook Automation (C++) Pin
David Crow28-Oct-03 4:08
David Crow28-Oct-03 4:08 
Generalurgent! Pin
ranjjj26-Oct-03 22:57
ranjjj26-Oct-03 22:57 
the following is a c++ program written to access the mailbox of the defaulkt mail client and read the mails ...
i experimented te code only with outlook...as that is only configured in my machine..the code works only iff outlook window is opened ..also it displays only 1 read mail for 1 execution of thios code...i want to dispaly all unread mails at a time when i run this program once..what are hte necessary changes to be made in the program..can someone plzz kindly help me in this!

#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
#include<conio.h>
#include<windows.h>
#include<mapi.h>
#include<mapidefs.h>
#include<winbase.h>


//assumption::character interface being used.
//the Simple MAPI functions for reading messages can't
//log on implicitly and require an explicit session handle.

/*the client application defines needed variables and
logs on to get a session handle */
/*ULONG ReadNextUnreadMsg(void);*/


ULONG ReadNextUnreadMsg()
{

ULONG err;
CHAR rgchMsgID[513]; // Message IDs should be >= 512 CHARs + a null.
MapiMessage *lpMessage; // Used to get a message back from MAPIReadmail
ULONG i; // Ubiquitous loop counter.
int totalLength;
int length;
int LINE_WIDTH = 0;

// Number of characters printed on a line.


LHANDLE m_lhSession; // Need a session for MAPIFindNext.

HINSTANCE hlibMAPI = LoadLibrary ( "MAPI32.DLL" );

LPMAPILOGON m_MAPILogon = (LPMAPILOGON)GetProcAddress(hlibMAPI,
"MAPILogon");
LPMAPIFINDNEXT m_MAPIFindNext = (LPMAPIFINDNEXT) GetProcAddress (hlibMAPI, "MAPIFindNext");
LPMAPIREADMAIL m_MAPIReadMail = (LPMAPIREADMAIL) GetProcAddress (hlibMAPI, "MAPIReadMail");
LPMAPIFREEBUFFER m_MAPIFreeBuffer = (LPMAPIFREEBUFFER) GetProcAddress (hlibMAPI, "MAPIFreeBuffer");
LPMAPILOGOFF m_MAPILogoff = (LPMAPILOGOFF) GetProcAddress (hlibMAPI, "MAPILogoff");


err =m_MAPILogon(0L, // ulUIParam; 0 always valid.
"Microsoft Outlook Internet Settings",// profile name to use when logging on
NULL, // No password needed.
0L, // Use shared session.
0L, // Reserved; must be 0.
&m_lhSession); // Session handle.
if (err != SUCCESS_SUCCESS) // Make sure MAPILogon succeeded.
{
printf("Error: could not log on\r\n");
return(err);
}

//next..the client searches for the first unread message in the
//default folder in the store - probably the user's Inbox.
//Since there might not be any unread messages in the folder,
//the client first tests the return value from the MAPIFindNext
//function against MAPI_E_NO_MESSAGES before checking against
//SUCCESS_SUCCESS. If the call is successful, the client will have
///a valid message identifier to use to retrieve the first
// unread message

// find the first unread message



err = m_MAPIFindNext(m_lhSession, // explicit session required
0L, // always valid ulUIParam
NULL, // NULL specifies interpersonal messages
NULL, // seed message ID; NULL=get first message
MAPI_LONG_MSGID | // needed for 512 byte rgchMsgID.
MAPI_UNREAD_ONLY, // only get unread messages.
0L, // reserved; must be 0
rgchMsgID);// buffer to get back a message ID.


if (err == MAPI_E_NO_MESSAGES) // make sure a message was found
{
printf("No unread messages.\r\n");
return(err);
}
if (err != SUCCESS_SUCCESS) // make sure MAPIFindNext didn't fail
{
printf("Error while searching for messages\r\n");
return(err);
}


//The client can now be sure it is safe to retrieve the message.
//However, it is a good idea to check the return value from
//the MAPIReadMail function. If the call fails, the memory pointed
//to by the client's lpMessage pointer will not be accessible by
//the client. The client should not try to display a message at
//that location. Note that this example sets the
//MAPI_SUPPRESS_ATTACH flag so the returned message will not
//have any attachments in it and Simple MAPI will not create any
//temporary files for them.

// retrieve the message




err = m_MAPIReadMail(m_lhSession, // Explicit session required.
0L, // Always valid ulUIParam.
rgchMsgID, // The message found by MAPIFindNext.
MAPI_SUPPRESS_ATTACH, // TO DO: handle attachments.
0L, // Reserved; must be 0.
&lpMessage); // Location of the returned message.

if(err != SUCCESS_SUCCESS) // Make sure MAPIReadMail succeeded.
{
printf("Error retrieving message %s\r\n",rgchMsgID);
return(err);
}



/*Now, the client can display the message. As expected,
it begins by displaying the addressing information attached
to the message before displaying the subject line and message text.
When displaying the addressing information, it is best if you
can display friendly names. However, since friendly names are
not always available, you must verify that each recipient
structure's lpszName member points to a valid string,
and that the string is not a null string.
Display the sender's name or address; use the friendly name
if it is present.*/


if((lpMessage->lpOriginator->lpszName != NULL) &&
lpMessage->lpOriginator->lpszName[0] != '\0')
printf("From: %s\r\n",lpMessage->lpOriginator->lpszName);
else
printf("From: %s\r\n",lpMessage->lpOriginator->lpszAddress);




/*Displaying the recipients' addresses is complicated by the
need to avoid breaking a recipient's name or address across
two lines. This code can be further improved by differentiating
between recipients based on their ulRecipClass members so that
they can be properly displayed as To, CC, or BCC recipients.
As this code shows, handling recipient data can be the most
complex part of reading a message.// Display the recipients'
names or addresses. To Do: enhance
this code to separate the recipients into lists of MAPI_TO,
MAPI_CC, and MAPI_BCC recipients for separate display.*/


if(lpMessage->nRecipCount == 0)
printf("Warning: no recipients present for this message\r\n");
else
for(i = 0; i<lpmessage->nRecipCount; i++) // For each recipient...
{
/* This code uses lstrlen to calculate the length of strings and
// to validate that the strings have some content, since the
// length is needed anyway. This avoids the more verbose checks
// as were done for lpMessage->lpOriginator->lpszName earlier.

// lpszT references a name or address; simplifies later code.
// length is the length of the name or address*/

LPSTR lpszT;
lpszT = lpMessage->lpRecips->lpszName;

length = lstrlen(lpszT);

if(i == 0) // First recipient; need to do some initialization.
{

printf("Recipients:");
totalLength = 11; // since strlen("Recipients:") = 11.
}

// Decide whether to use the friendly name or the address.
if(length == 0)
length = lstrlen(lpszT=lpMessage->lpRecips->lpszAddress);

// Verify that the line has room for this name or address. If
// not, print a CR LF pair to go to the next line.

if(totalLength + length + 1 > LINE_WIDTH)
{

printf("\r\n");
totalLength = 0;
}

printf(" %s",lpszT); // Finally, print the name or address.
totalLength += length + 1;// Maintain the line length.

// If there are more addresses, separate them with semicolons.

if(i < (lpMessage->nRecipCount - 1))
{
printf(";");
totalLength++;
}
}


//Now, the client displays the subject line and message text if
//they are present. Note that the message text can be printed
//with a simple call to the C library function printf. Since
//the message was read with the MAPI_SUPPRESS_ATTACH flag set,
//there will be no attachments in it.// Display the subject
//and message body. Not printing anything
//for the subject is fine, but something should always be
//printed for the message body since it is the last thing
//that this function displays.

if(lpMessage->lpszSubject != NULL && // Standard validity check
lpMessage->lpszSubject[0] != '\0')
printf("Subject: %s\r\n",lpMessage->lpszSubject);
if(lpMessage->lpszNoteText != NULL && // Standard validity check
lpMessage->lpszNoteText[0] != '\0')
printf("Message Text:\r\n%s",lpMessage->lpszNoteText);
else
printf("No message text.\r\n");

//Finally, the client releases the memory that the MAPIReadMail
//function allocated for the message, closes the session,
//and returns a successful return value.


m_MAPIFreeBuffer(lpMessage);


m_MAPILogoff(m_lhSession, // The session.
0L, // 0 always valid for ulUIParam.
0L, // No logoff flags.
0L); // Reserved; must be 0.
return SUCCESS_SUCCESS; // Inform the caller of our success.

} // End of ReadNextUnreadMsg


void main()
{
HINSTANCE hlibMAPI = LoadLibrary ( "MAPI32.DLL" );
ReadNextUnreadMsg();

}


ranjani
GeneralRe: urgent! Pin
David Crow27-Oct-03 2:46
David Crow27-Oct-03 2:46 
GeneralRe: urgent! Pin
ranjjj27-Oct-03 17:04
ranjjj27-Oct-03 17:04 
GeneralRe: urgent! Pin
David Crow28-Oct-03 2:45
David Crow28-Oct-03 2:45 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 2:56
ranjjj28-Oct-03 2:56 
GeneralRe: urgent! Pin
David Crow28-Oct-03 3:09
David Crow28-Oct-03 3:09 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 0:48
ranjjj28-Oct-03 0:48 
GeneralRe: urgent! Pin
David Crow28-Oct-03 3:02
David Crow28-Oct-03 3:02 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 3:22
ranjjj28-Oct-03 3:22 
GeneralRe: urgent! Pin
David Crow28-Oct-03 4:10
David Crow28-Oct-03 4:10 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 17:02
ranjjj28-Oct-03 17:02 
GeneralRe: urgent! Pin
David Crow28-Oct-03 3:05
David Crow28-Oct-03 3:05 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 3:27
ranjjj28-Oct-03 3:27 
GeneralRe: urgent! Pin
Anonymous28-Oct-03 22:49
Anonymous28-Oct-03 22:49 
GeneralRe: urgent! Pin
ranjjj28-Oct-03 22:53
ranjjj28-Oct-03 22:53 
QuestionHow to handle right mouse button click in menu Pin
kotbegemot26-Oct-03 22:24
kotbegemot26-Oct-03 22:24 
AnswerRe: How to handle right mouse button click in menu Pin
Michael Dunn27-Oct-03 4:10
sitebuilderMichael Dunn27-Oct-03 4:10 
GeneralLoadIcon and LoadMenu fails...... Pin
Paolo Ponzano26-Oct-03 21:46
Paolo Ponzano26-Oct-03 21:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.