MFC dll:使用MAPI
int SendEmail(const char* Address,const char* Subject,const char* Text)
{
int iResult;
HINSTANCE hMAPIInst;
LPMAPILOGON pMAPILogon;
LPMAPILOGOFF pMAPILogoff;
LPMAPISENDMAIL pMAPISendMail;
LHANDLE lhSession;
iResult = SENDEMAIL_SUCCESS;
hMAPIInst = LoadLibrary(_T("MAPI32.DLL"));
if(!hMAPIInst)
return SENDEMAIL_MAPILOAD_FAILED;
pMAPILogon = (LPMAPILOGON)
GetProcAddress(hMAPIInst, "MAPILogon");
pMAPILogoff = (LPMAPILOGOFF)
GetProcAddress(hMAPIInst, "MAPILogoff");
pMAPISendMail = (LPMAPISENDMAIL)
GetProcAddress(hMAPIInst, "MAPISendMail");
if(pMAPILogon(0, NULL, NULL, MAPI_LOGON_UI, 0, &lhSession)
!= SUCCESS_SUCCESS)
{
iResult = SENDEMAIL_LOGON_FAILED;
}
else /* Send the Message */
{
ULONG Result;
MapiMessage Msg;
MapiRecipDesc Recipients;
Recipients.ulReserved = 0;
Recipients.ulRecipClass = MAPI_TO;
Recipients.lpszName = (char*)Address;
Recipients.lpszAddress = (char*)Address;
Recipients.ulEIDSize = 0;
Recipients.lpEntryID = 0;
memset(&Msg, 0, sizeof(Msg));
Msg.lpszSubject = (char*)Subject;
Msg.lpszNoteText = (char*)Text;
Msg.nRecipCount = 1;
Msg.lpRecips =& Recipients;
Result = pMAPISendMail(lhSession, 0, &Msg, 0, 0);
if(Result != SUCCESS_SUCCESS)
iResult = SENDEMAIL_SEND_FAILED;
pMAPILogoff(lhSession, 0, 0, 0);
}
FreeLibrary(hMAPIInst);
return iResult;
}
函数调用
extern int sendMessage(char* address,char* title,char* content)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(SendEmail(address, title,content)==SENDEMAIL_SUCCESS)return 0;
return -1;
}
wr可以使用int sendMessage(string,string,string)发送邮件,具体使用方法,参见
http://blog.csdn.net/xiaoxin710/archive/2008/08/07/2783354.aspx
int SendEmail(const char* Address,const char* Subject,const char* Text)
{
int iResult;
HINSTANCE hMAPIInst;
LPMAPILOGON pMAPILogon;
LPMAPILOGOFF pMAPILogoff;
LPMAPISENDMAIL pMAPISendMail;
LHANDLE lhSession;
iResult = SENDEMAIL_SUCCESS;
hMAPIInst = LoadLibrary(_T("MAPI32.DLL"));
if(!hMAPIInst)
return SENDEMAIL_MAPILOAD_FAILED;
pMAPILogon = (LPMAPILOGON)
GetProcAddress(hMAPIInst, "MAPILogon");
pMAPILogoff = (LPMAPILOGOFF)
GetProcAddress(hMAPIInst, "MAPILogoff");
pMAPISendMail = (LPMAPISENDMAIL)
GetProcAddress(hMAPIInst, "MAPISendMail");
if(pMAPILogon(0, NULL, NULL, MAPI_LOGON_UI, 0, &lhSession)
!= SUCCESS_SUCCESS)
{
iResult = SENDEMAIL_LOGON_FAILED;
}
else /* Send the Message */
{
ULONG Result;
MapiMessage Msg;
MapiRecipDesc Recipients;
Recipients.ulReserved = 0;
Recipients.ulRecipClass = MAPI_TO;
Recipients.lpszName = (char*)Address;
Recipients.lpszAddress = (char*)Address;
Recipients.ulEIDSize = 0;
Recipients.lpEntryID = 0;
memset(&Msg, 0, sizeof(Msg));
Msg.lpszSubject = (char*)Subject;
Msg.lpszNoteText = (char*)Text;
Msg.nRecipCount = 1;
Msg.lpRecips =& Recipients;
Result = pMAPISendMail(lhSession, 0, &Msg, 0, 0);
if(Result != SUCCESS_SUCCESS)
iResult = SENDEMAIL_SEND_FAILED;
pMAPILogoff(lhSession, 0, 0, 0);
}
FreeLibrary(hMAPIInst);
return iResult;
}
函数调用
extern int sendMessage(char* address,char* title,char* content)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(SendEmail(address, title,content)==SENDEMAIL_SUCCESS)return 0;
return -1;
}
wr可以使用int sendMessage(string,string,string)发送邮件,具体使用方法,参见
http://blog.csdn.net/xiaoxin710/archive/2008/08/07/2783354.aspx