| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- #include "stdafx.h"
 
- #include "SendMail.h"
 
- #include "Path.h"
 
- #include <mapi.h>
 
- #include "Misc.h"
 
- bool SendMail::Send(CString subject, CString body, CString attachmentFileName)
 
- {
 
- 	HINSTANCE hMAPI = ::LoadLibraryA(("MAPI32.DLL"));
 
- 	if (!hMAPI)
 
- 	{
 
- 		log(_T("failed to load MAPI32.DLL"));
 
- 		return false;
 
- 	}
 
- 	// Grab the exported entry point for the MAPISendMail function
 
- 	ULONG(PASCAL *SendMail)(ULONG, ULONG_PTR, MapiMessageW*, FLAGS, ULONG);
 
- 	(FARPROC&)SendMail = GetProcAddress(hMAPI, "MAPISendMailW");
 
- 	if (!SendMail)
 
- 	{
 
- 		log(_T("failed to load MAPISendMailW from MAPI32.DLL"));
 
- 		return false;
 
- 	}
 
- 	MapiMessageW message;
 
- 	::ZeroMemory(&message, sizeof(message));
 
- 	message.lpszNoteText = body.GetBuffer();
 
- 	message.lpszSubject = subject.GetBuffer();
 
- 	CString attachFileName;
 
- 	if (attachmentFileName != _T(""))
 
- 	{
 
- 		MapiFileDescW fileDesc;
 
- 		::ZeroMemory(&fileDesc, sizeof(fileDesc));
 
- 		fileDesc.nPosition = (ULONG)-1;
 
- 		fileDesc.lpszPathName = attachmentFileName.GetBuffer();
 
- 		using namespace nsPath;
 
- 		CPath path(fileDesc.lpszPathName);
 
- 		attachFileName = path.GetName();
 
- 		fileDesc.lpszFileName = attachFileName.GetBuffer();
 
- 		message.nFileCount = 1;
 
- 		message.lpFiles = &fileDesc;
 
- 	}
 
- 	// Ok to send
 
- 	int nError = SendMail(0, (ULONG_PTR)0, &message, MAPI_DIALOG_MODELESS, 0);
 
- 	if (nError != SUCCESS_SUCCESS)
 
- 	{
 
- 		log(StrF(_T("SendMail failed, return %d"), nError));
 
- 		return false;
 
- 	}
 
- 	return true;
 
- }
 
 
  |