请教:发邮件的VC++6.0代码? I'll send to your mail-box. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //////////////////////////////////////////////////////////////////////// CRobotMail.h - CRobotMail class declarations//// Source: "Programming Bots, Spiders, and Intelligent Agents// in Microsoft Visual C++"//// Copyright (c) 1999, David Pallmann. All rights reserved.#include <mapi.h>class CRobotMail{public: CRobotMail(); int GetNewMessageCount(); int GetMessageCount(); BOOL FirstNewMessage(BOOL bMarkAsRead = false); BOOL FirstMessage(BOOL bMarkAsRead = false); BOOL NextMessage(BOOL bMarkAsRead = false); BOOL SendMessage(CString sTo, CString sSubject, CString sMessage, CString sAttachment); ~CRobotMail();public: CString m_sFrom; CString m_sFromAddress; CString m_sSubject; CString m_sMessage; CString m_sDate; BOOL m_bRead;private: BOOL m_bInitialized; BOOL m_bNewOnly; HINSTANCE m_hInstMail; ULONG m_lhSession; // LHANDLEprivate: char m_pMessageID[513]; MapiMessage m_message; MapiMessage *m_pMessage;};//////////////////////////////////////////////////////////////////////// CRobotMail.cpp - CRobotMail class implementation//// Source: "Programming Bots, Spiders, and Intelligent Agents// in Microsoft Visual C++"//// Copyright (c) 1999, David Pallmann. All rights reserved.#include <stdafx.h>#include <mapi.h>#include "CRobotMail.h"// *************************// * MAPI function calls *// *************************ULONG (PASCAL *lpfnMAPISendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);ULONG (PASCAL *lpfnMAPIResolveName)(LHANDLE, ULONG, LPTSTR, FLAGS, ULONG, MapiRecipDesc **);ULONG (FAR PASCAL *lpfnMAPILogon)(ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE);ULONG (FAR PASCAL *lpfnMAPILogoff)(LHANDLE, ULONG, FLAGS, ULONG);ULONG (FAR PASCAL *lpfnMAPIFreeBuffer)(LPVOID);ULONG (FAR PASCAL *lpfnMAPIAddress)(LHANDLE, ULONG, LPSTR, ULONG, LPSTR, ULONG, MapiRecipDesc *, FLAGS, ULONG, LPULONG, MapiRecipDesc **);ULONG (FAR PASCAL *lpfnMAPIFindNext)(LHANDLE, ULONG, LPSTR, LPSTR, FLAGS, ULONG, LPSTR);ULONG (FAR PASCAL *lpfnMAPIReadMail)(LHANDLE, ULONG, LPSTR, FLAGS, ULONG, lpMapiMessage FAR *lppMessage);// *****************// * Constructor *// *****************CRobotMail::CRobotMail(){ // Load Mapi32.dll and compute function addresses m_hInstMail = ::LoadLibrary("Mapi32.dll"); if(m_hInstMail == NULL) { AfxMessageBox("CRobotMail: unable to load MAPI32.dll"); m_bInitialized = false; return; } // End if /* Find the addresses of functions and store them in function pointer variables */ (FARPROC&)lpfnMAPILogon = GetProcAddress(m_hInstMail, "MAPILogon"); if (lpfnMAPILogon == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPILogon function"); return; } // End if (FARPROC&)lpfnMAPIFindNext = GetProcAddress(m_hInstMail, "MAPIFindNext"); if (lpfnMAPIFindNext == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPIFindNext function"); return; } // End if (FARPROC&)lpfnMAPIReadMail = GetProcAddress(m_hInstMail, "MAPIReadMail"); if (lpfnMAPIReadMail == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPIReadMail function"); return; } // End if (FARPROC&)lpfnMAPIFreeBuffer = GetProcAddress(m_hInstMail, "MAPIFreeBuffer"); if (lpfnMAPIFreeBuffer == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPIFreeBuffer function"); return; } // End if (FARPROC&)lpfnMAPIResolveName = GetProcAddress(m_hInstMail, "MAPIResolveName"); if (lpfnMAPIResolveName == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPIResolveName function"); return; } // End if (FARPROC&)lpfnMAPISendMail = GetProcAddress(m_hInstMail, "MAPISendMail"); if (lpfnMAPISendMail == NULL) { AfxMessageBox("CRobotMail: could not find " "the MAPISendMail function"); return; } // End if // Log on to existing session ULONG lResult = lpfnMAPILogon(0, NULL, // sProfileName NULL, // sPassword 0, // flFlags 0, &m_lhSession); if (lResult != SUCCESS_SUCCESS) return; // Logon failed m_bInitialized = true;}// ************************// * *// * GetNewMessageCount *// * *// ************************// Description: Returns a count of the number of // unread messages in the inboxint CRobotMail::GetNewMessageCount(){ if (!m_bInitialized) return 0; int nCount = 0; // Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, NULL, MAPI_LONG_MSGID and MAPI_UNREAD_ONLY, 0, m_pMessageID); while (lResult == SUCCESS_SUCCESS) { nCount++; lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, m_pMessageID, MAPI_LONG_MSGID and MAPI_UNREAD_ONLY, 0, m_pMessageID); } return nCount;}// *********************// * *// * GetMessageCount *// * *// *********************// Description: Returns a count of the number of messages // in the inbox (both read and unread)int CRobotMail::GetMessageCount(){ if (!m_bInitialized) return 0; int nCount = 0; // Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, NULL, MAPI_LONG_MSGID, 0, m_pMessageID); while (lResult == SUCCESS_SUCCESS) { nCount++; lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, m_pMessageID, MAPI_LONG_MSGID, 0, m_pMessageID); } return nCount;}// *********************// * *// * FirstNewMessage *// * *// *********************// Description: Moves to the first unread message in the inboxBOOL CRobotMail::FirstNewMessage(BOOL bMarkAsRead){ if (!m_bInitialized) return false; m_bNewOnly = true; // Find the first unread message ULONG lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, NULL, MAPI_LONG_MSGID and MAPI_UNREAD_ONLY, 0, m_pMessageID); if (lResult != SUCCESS_SUCCESS) return false; // Read the message (that was found by MAPIFindNext) long nFlags = MAPI_SUPPRESS_ATTACH; if (!bMarkAsRead) nFlags = nFlags and MAPI_PEEK; lResult = lpfnMAPIReadMail(m_lhSession, NULL, m_pMessageID, nFlags, 0, &m_pMessage); if (lResult != SUCCESS_SUCCESS) return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived); m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD) m_bRead = true; else m_bRead = false; // Deallocate the memory for the message lpfnMAPIFreeBuffer(m_pMessage); return true;}// ******************// * *// * FirstMessage *// * *// ******************// Description: Moves to the first message in the inboxBOOL CRobotMail::FirstMessage(BOOL bMarkAsRead){ if (!m_bInitialized) return false; m_bNewOnly = false; // Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, NULL, MAPI_LONG_MSGID, 0, m_pMessageID); if (lResult != SUCCESS_SUCCESS) return false; // Read the message (that was found by MAPIFindNext) long nFlags = MAPI_SUPPRESS_ATTACH; if (!bMarkAsRead) nFlags = nFlags and MAPI_PEEK; lResult = lpfnMAPIReadMail(m_lhSession, NULL, m_pMessageID, nFlags, 0, &m_pMessage); if (lResult != SUCCESS_SUCCESS) return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived); m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD) m_bRead = true; else m_bRead = false; // Deallocate the memory for the message lpfnMAPIFreeBuffer(m_pMessage); return true;}// *****************// * *// * NextMessage *// * *// *****************// Description: Returns a count of the number // of messages (both read and unread)BOOL CRobotMail::NextMessage(BOOL bMarkAsRead){ if (!m_bInitialized) false; if (!m_bInitialized) return false; // Find the next message long nFlags = MAPI_LONG_MSGID; if (m_bNewOnly) nFlags = nFlags and MAPI_UNREAD_ONLY; ULONG lResult = lpfnMAPIFindNext(m_lhSession, NULL, NULL, m_pMessageID, nFlags, 0, m_pMessageID); if (lResult != SUCCESS_SUCCESS) return false; // Read the message (that was found by MAPIFindNext) nFlags = MAPI_SUPPRESS_ATTACH; if (!bMarkAsRead) nFlags = nFlags and MAPI_PEEK; lResult = lpfnMAPIReadMail(m_lhSession, NULL, m_pMessageID, nFlags, 0, &m_pMessage); if (lResult != SUCCESS_SUCCESS) return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived); m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD) m_bRead = true; else m_bRead = false; // Deallocate the memory for the message lpfnMAPIFreeBuffer(m_pMessage); return true;}// *****************// * *// * SendMessage *// * *// *****************// Description: Sends a messageBOOL CRobotMail::SendMessage(CString sTo, CString sSubject, CString sMessage, CString sAttachment){ if (!m_bInitialized) return false; char recipient[512]; char subject[512]; char path[512]; char filename[512]; char text[5000]; CString sPath, sFilename; MapiFileDesc m_FileInfo; memset(&m_message, 0, sizeof(m_message)); m_message.ulReserved = 0; m_message.lpszMessageType = NULL; strcpy(subject, sSubject); m_message.lpszSubject = subject; strcpy(text, sMessage); m_message.lpszNoteText = text; m_message.flFlags = MAPI_SENT; m_message.lpOriginator = NULL; m_message.nRecipCount = 1; strcpy(recipient, sTo); ULONG lResult = lpfnMAPIResolveName(m_lhSession, 0, recipient, 0, 0, &m_message.lpRecips); if (lResult != SUCCESS_SUCCESS) return false; if (sAttachment == "") m_message.nFileCount = 0; else { int nPos = sAttachment.ReverseFind('\\'); if (nPos == -1) { sPath = sAttachment; sFilename = sAttachment; } // End if else { sPath = sAttachment; sFilename = sAttachment.Mid(nPos + 1); } // End else strcpy(path, sPath); strcpy(filename, sFilename); m_message.nFileCount = 1; m_FileInfo.ulReserved = 0; m_FileInfo.flFlags = 0; m_FileInfo.nPosition = sMessage.GetLength() - 1; m_FileInfo.lpszPathName = path; m_FileInfo.lpszFileName = filename; m_FileInfo.lpFileType = NULL; m_message.lpFiles = &m_FileInfo; } // End else lResult = lpfnMAPISendMail(0, 0, &m_message, 0, 0); lpfnMAPIFreeBuffer(m_message.lpRecips); if (lResult == SUCCESS_SUCCESS) return true; else return false;}// ****************// * Destructor *// ****************CRobotMail::~CRobotMail(){ if (!m_bInitialized) return; m_bInitialized = false;} 多个CPP公用全局变量有什么方法 关于全局键盘钩子的问题,求指点,求进步! vc里面如何保存edit里面上次输入的内容 vc滚动条控件的一件怪事?!是微软的bug吗? 在调试过程中,怎样实时的调试MFC,或GhostWin窗口中的东西? 对话框间变量值传递问题 如何列表框里显示一个小图片(ico格式)???? 如何判断一点在四边形内(包括凹凸),请教高手, 用EnumChildWindows枚举窗口时,如何获取子窗口的继承关系 USB上位机编写 DLL的问题 CRecordSet
//
// CRobotMail.h - CRobotMail class declarations
//
// Source: "Programming Bots, Spiders, and Intelligent Agents
// in Microsoft Visual C++"
//
// Copyright (c) 1999, David Pallmann. All rights reserved.#include <mapi.h>class CRobotMail
{
public:
CRobotMail();
int GetNewMessageCount();
int GetMessageCount();
BOOL FirstNewMessage(BOOL bMarkAsRead = false);
BOOL FirstMessage(BOOL bMarkAsRead = false);
BOOL NextMessage(BOOL bMarkAsRead = false);
BOOL SendMessage(CString sTo,
CString sSubject,
CString sMessage,
CString sAttachment);
~CRobotMail();public:
CString m_sFrom;
CString m_sFromAddress;
CString m_sSubject;
CString m_sMessage;
CString m_sDate;
BOOL m_bRead;private:
BOOL m_bInitialized;
BOOL m_bNewOnly;
HINSTANCE m_hInstMail;
ULONG m_lhSession; // LHANDLEprivate:
char m_pMessageID[513];
MapiMessage m_message;
MapiMessage *m_pMessage;
};
////////////////////////////////////////////////////////////////////
//
// CRobotMail.cpp - CRobotMail class implementation
//
// Source: "Programming Bots, Spiders, and Intelligent Agents
// in Microsoft Visual C++"
//
// Copyright (c) 1999, David Pallmann. All rights reserved.#include <stdafx.h>
#include <mapi.h>
#include "CRobotMail.h"
// *************************
// * MAPI function calls *
// *************************ULONG (PASCAL *lpfnMAPISendMail)(ULONG,
ULONG,
MapiMessage*,
FLAGS,
ULONG);
ULONG (PASCAL *lpfnMAPIResolveName)(LHANDLE,
ULONG,
LPTSTR,
FLAGS,
ULONG,
MapiRecipDesc **);
ULONG (FAR PASCAL *lpfnMAPILogon)(ULONG,
LPSTR,
LPSTR,
FLAGS,
ULONG,
LPLHANDLE);
ULONG (FAR PASCAL *lpfnMAPILogoff)(LHANDLE, ULONG, FLAGS, ULONG);
ULONG (FAR PASCAL *lpfnMAPIFreeBuffer)(LPVOID);
ULONG (FAR PASCAL *lpfnMAPIAddress)(LHANDLE,
ULONG,
LPSTR,
ULONG,
LPSTR,
ULONG,
MapiRecipDesc *,
FLAGS,
ULONG,
LPULONG,
MapiRecipDesc **);
ULONG (FAR PASCAL *lpfnMAPIFindNext)(LHANDLE,
ULONG,
LPSTR,
LPSTR,
FLAGS,
ULONG,
LPSTR);
ULONG (FAR PASCAL *lpfnMAPIReadMail)(LHANDLE,
ULONG,
LPSTR,
FLAGS,
ULONG,
lpMapiMessage FAR *lppMessage);
// *****************
// * Constructor *
// *****************CRobotMail::CRobotMail()
{
// Load Mapi32.dll and compute function addresses m_hInstMail = ::LoadLibrary("Mapi32.dll");
if(m_hInstMail == NULL)
{
AfxMessageBox("CRobotMail: unable to load MAPI32.dll");
m_bInitialized = false;
return;
} // End if /* Find the addresses of functions and store them in function
pointer variables */ (FARPROC&)lpfnMAPILogon = GetProcAddress(m_hInstMail,
"MAPILogon");
if (lpfnMAPILogon == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPILogon function");
return;
} // End if (FARPROC&)lpfnMAPIFindNext = GetProcAddress(m_hInstMail,
"MAPIFindNext");
if (lpfnMAPIFindNext == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPIFindNext function");
return;
} // End if (FARPROC&)lpfnMAPIReadMail = GetProcAddress(m_hInstMail,
"MAPIReadMail");
if (lpfnMAPIReadMail == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPIReadMail function");
return;
} // End if (FARPROC&)lpfnMAPIFreeBuffer = GetProcAddress(m_hInstMail,
"MAPIFreeBuffer");
if (lpfnMAPIFreeBuffer == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPIFreeBuffer function");
return;
} // End if (FARPROC&)lpfnMAPIResolveName = GetProcAddress(m_hInstMail,
"MAPIResolveName");
if (lpfnMAPIResolveName == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPIResolveName function");
return;
} // End if (FARPROC&)lpfnMAPISendMail = GetProcAddress(m_hInstMail,
"MAPISendMail");
if (lpfnMAPISendMail == NULL)
{
AfxMessageBox("CRobotMail: could not find "
"the MAPISendMail function");
return;
} // End if // Log on to existing session ULONG lResult = lpfnMAPILogon(0,
NULL, // sProfileName
NULL, // sPassword
0, // flFlags
0,
&m_lhSession);
if (lResult != SUCCESS_SUCCESS)
return; // Logon failed m_bInitialized = true;
}
// ************************
// * *
// * GetNewMessageCount *
// * *
// ************************
// Description: Returns a count of the number of
// unread messages in the inboxint CRobotMail::GetNewMessageCount()
{
if (!m_bInitialized) return 0;
int nCount = 0; // Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
NULL,
MAPI_LONG_MSGID and MAPI_UNREAD_ONLY,
0,
m_pMessageID);
while (lResult == SUCCESS_SUCCESS)
{
nCount++;
lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
m_pMessageID,
MAPI_LONG_MSGID and MAPI_UNREAD_ONLY,
0,
m_pMessageID);
} return nCount;
}
// *********************
// * *
// * GetMessageCount *
// * *
// *********************
// Description: Returns a count of the number of messages
// in the inbox (both read and unread)int CRobotMail::GetMessageCount()
{
if (!m_bInitialized) return 0;
int nCount = 0; // Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
NULL,
MAPI_LONG_MSGID,
0,
m_pMessageID);
while (lResult == SUCCESS_SUCCESS)
{
nCount++;
lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
m_pMessageID,
MAPI_LONG_MSGID,
0,
m_pMessageID);
} return nCount;
}
// *********************
// * *
// * FirstNewMessage *
// * *
// *********************
// Description: Moves to the first unread message in the inboxBOOL CRobotMail::FirstNewMessage(BOOL bMarkAsRead)
{
if (!m_bInitialized) return false; m_bNewOnly = true;
// Find the first unread message ULONG lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
NULL,
MAPI_LONG_MSGID and MAPI_UNREAD_ONLY,
0,
m_pMessageID);
if (lResult != SUCCESS_SUCCESS)
return false; // Read the message (that was found by MAPIFindNext) long nFlags = MAPI_SUPPRESS_ATTACH;
if (!bMarkAsRead)
nFlags = nFlags and MAPI_PEEK;
lResult = lpfnMAPIReadMail(m_lhSession,
NULL,
m_pMessageID,
nFlags,
0,
&m_pMessage);
if (lResult != SUCCESS_SUCCESS)
return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived); m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD)
m_bRead = true;
else
m_bRead = false; // Deallocate the memory for the message
lpfnMAPIFreeBuffer(m_pMessage); return true;
}
// ******************
// * *
// * FirstMessage *
// * *
// ******************
// Description: Moves to the first message in the inboxBOOL CRobotMail::FirstMessage(BOOL bMarkAsRead)
{
if (!m_bInitialized) return false; m_bNewOnly = false;
// Find the first message ULONG lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
NULL,
MAPI_LONG_MSGID,
0,
m_pMessageID);
if (lResult != SUCCESS_SUCCESS)
return false; // Read the message (that was found by MAPIFindNext) long nFlags = MAPI_SUPPRESS_ATTACH;
if (!bMarkAsRead)
nFlags = nFlags and MAPI_PEEK;
lResult = lpfnMAPIReadMail(m_lhSession,
NULL,
m_pMessageID,
nFlags,
0,
&m_pMessage);
if (lResult != SUCCESS_SUCCESS)
return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived);
m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD)
m_bRead = true;
else
m_bRead = false; // Deallocate the memory for the message
lpfnMAPIFreeBuffer(m_pMessage); return true;
}
// *****************
// * *
// * NextMessage *
// * *
// *****************
// Description: Returns a count of the number
// of messages (both read and unread)BOOL CRobotMail::NextMessage(BOOL bMarkAsRead)
{
if (!m_bInitialized) false;
if (!m_bInitialized) return false;
// Find the next message long nFlags = MAPI_LONG_MSGID;
if (m_bNewOnly)
nFlags = nFlags and MAPI_UNREAD_ONLY; ULONG lResult = lpfnMAPIFindNext(m_lhSession,
NULL,
NULL,
m_pMessageID,
nFlags,
0,
m_pMessageID);
if (lResult != SUCCESS_SUCCESS)
return false; // Read the message (that was found by MAPIFindNext) nFlags = MAPI_SUPPRESS_ATTACH;
if (!bMarkAsRead)
nFlags = nFlags and MAPI_PEEK;
lResult = lpfnMAPIReadMail(m_lhSession,
NULL,
m_pMessageID,
nFlags,
0,
&m_pMessage);
if (lResult != SUCCESS_SUCCESS)
return false; m_sFrom = CString(m_pMessage->lpOriginator->lpszName); m_sFromAddress = CString(m_pMessage->lpOriginator->lpszAddress); m_sDate = CString(m_pMessage->lpszDateReceived); m_sSubject = CString(m_pMessage->lpszSubject); m_sMessage = CString(m_pMessage->lpszNoteText); if (m_pMessage->flFlags & MAPI_UNREAD)
m_bRead = true;
else
m_bRead = false; // Deallocate the memory for the message
lpfnMAPIFreeBuffer(m_pMessage); return true;
}
// *****************
// * *
// * SendMessage *
// * *
// *****************
// Description: Sends a messageBOOL CRobotMail::SendMessage(CString sTo,
CString sSubject,
CString sMessage,
CString sAttachment)
{
if (!m_bInitialized) return false;
char recipient[512];
char subject[512];
char path[512];
char filename[512];
char text[5000];
CString sPath, sFilename;
MapiFileDesc m_FileInfo;
memset(&m_message, 0, sizeof(m_message));
m_message.ulReserved = 0;
m_message.lpszMessageType = NULL;
strcpy(subject, sSubject);
m_message.lpszSubject = subject;
strcpy(text, sMessage);
m_message.lpszNoteText = text;
m_message.flFlags = MAPI_SENT;
m_message.lpOriginator = NULL;
m_message.nRecipCount = 1;
strcpy(recipient, sTo);
ULONG lResult = lpfnMAPIResolveName(m_lhSession,
0,
recipient,
0,
0,
&m_message.lpRecips);
if (lResult != SUCCESS_SUCCESS)
return false;
if (sAttachment == "")
m_message.nFileCount = 0;
else
{
int nPos = sAttachment.ReverseFind('\\');
if (nPos == -1)
{
sPath = sAttachment;
sFilename = sAttachment;
} // End if
else
{
sPath = sAttachment;
sFilename = sAttachment.Mid(nPos + 1);
} // End else
strcpy(path, sPath);
strcpy(filename, sFilename);
m_message.nFileCount = 1;
m_FileInfo.ulReserved = 0;
m_FileInfo.flFlags = 0;
m_FileInfo.nPosition = sMessage.GetLength() - 1;
m_FileInfo.lpszPathName = path;
m_FileInfo.lpszFileName = filename;
m_FileInfo.lpFileType = NULL;
m_message.lpFiles = &m_FileInfo;
} // End else lResult = lpfnMAPISendMail(0, 0, &m_message, 0, 0); lpfnMAPIFreeBuffer(m_message.lpRecips); if (lResult == SUCCESS_SUCCESS)
return true;
else
return false;
}
// ****************
// * Destructor *
// ****************CRobotMail::~CRobotMail()
{
if (!m_bInitialized) return;
m_bInitialized = false;
}