⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mapiex.h

📁 A (hopefully) complete extended MAPI wrapper for WinXP, WinCE, and .NET.
💻 H
字号:
#ifndef __MAPIEX_H__
#define __MAPIEX_H__

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// File: MAPIEx.h
// Description: Windows Extended MAPI class 
//				Works in Windows CE and Windows XP with Outlook 2000 and 2003, maybe others but untested
//
// Copyright (C) 2005-2006, Noel Dillabough
//
// This source code is free to use and modify provided this notice remains intact and that any enhancements
// or bug fixes are posted to the CodeProject page hosting this class for all to benefit.
//
// Usage: see the Codeproject article at http://www.codeproject.com/internet/CMapiEx.asp
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////

#ifdef _WIN32_WCE
#include <cemapi.h>
#include <objidl.h>
#else
#include <mapix.h>
#include <objbase.h>
#endif

#define RELEASE(s) if(s!=NULL) { s->Release();s=NULL; }

#include "MAPIMessage.h"
#include "MAPIContact.h"

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CMAPIEx

class AFX_EXT_CLASS CMAPIEx 
{
public:
	CMAPIEx();
	~CMAPIEx();

	enum { PROP_MESSAGE_FLAGS, PROP_ENTRYID, MESSAGE_COLS };

// Attributes
public:
	static int cm_nMAPICode;

protected:
	IMAPISession* m_pSession;
	LPMDB m_pMsgStore;
	LPMAPIFOLDER m_pFolder;
	LPMAPITABLE m_pHierarchy;
	LPMAPITABLE m_pContents;
	ULONG m_sink;

// Operations
public:
	static BOOL Init(BOOL bMultiThreadedNotifcations=TRUE);
	static void Term();

	IMAPISession* GetSession() { return m_pSession; }
	LPMDB GetMessageStore() { return m_pMsgStore; }
	LPMAPIFOLDER GetFolder() { return m_pFolder; }

	BOOL Login(LPCTSTR szProfileName=NULL);
	void Logout();

	LPCTSTR GetProfileName();
	BOOL OpenMessageStore(LPCTSTR szStore=NULL);
	ULONG GetMessageStoreSupport();

	// use bInternal to specify that MAPIEx keeps track of and subsequently RELEASEs the folder 
	// remember to eventually RELEASE returned folders if calling with bInternal=FALSE
	LPMAPIFOLDER OpenFolder(unsigned long ulFolderID,BOOL bInternal);
	LPMAPIFOLDER OpenRootFolder(BOOL bInternal=TRUE);
	LPMAPIFOLDER OpenInbox(BOOL bInternal=TRUE);
	LPMAPIFOLDER OpenOutbox(BOOL bInternal=TRUE);
	LPMAPIFOLDER OpenSentItems(BOOL bInternal=TRUE);
	LPMAPIFOLDER OpenDeletedItems(BOOL bInternal=TRUE);

	LPMAPITABLE GetHierarchy(LPMAPIFOLDER pFolder=NULL);
	LPMAPIFOLDER GetNextSubFolder(CString& strFolder,LPMAPIFOLDER pFolder=NULL);
	LPMAPIFOLDER OpenSubFolder(LPCTSTR szSubFolder,LPMAPIFOLDER pFolder=NULL);
	LPMAPIFOLDER CreateSubFolder(LPCTSTR szSubFolder,LPMAPIFOLDER pFolder=NULL);
	BOOL DeleteSubFolder(LPCTSTR szSubFolder,LPMAPIFOLDER pFolder=NULL);
	BOOL DeleteSubFolder(LPMAPIFOLDER pSubFolder,LPMAPIFOLDER pFolder=NULL);

	BOOL GetContents(LPMAPIFOLDER pFolder=NULL);
	BOOL SortContents(ULONG ulSortParam=TABLE_SORT_ASCEND,ULONG ulSortField=PR_MESSAGE_DELIVERY_TIME);
	BOOL GetNextMessage(CMAPIMessage& message,BOOL bUnreadOnly=FALSE);
	BOOL GetNextContact(CMAPIContact& contact);

	BOOL DeleteMessage(CMAPIMessage& message,LPMAPIFOLDER pFolder=NULL);
	BOOL CopyMessage(CMAPIMessage& message,LPMAPIFOLDER pFolderDest,LPMAPIFOLDER pFolderSrc=NULL);
	BOOL MoveMessage(CMAPIMessage& message,LPMAPIFOLDER pFolderDest,LPMAPIFOLDER pFolderSrc=NULL);

	BOOL SendMessage(CMAPIMessage& message);

	BOOL Notify(LPNOTIFCALLBACK lpfnCallback,LPVOID lpvContext,ULONG ulEventMask=fnevNewMail);

	static LPCTSTR GetValidString(SPropValue& prop);
};

#ifndef PR_BODY_HTML
#define PR_BODY_HTML PROP_TAG( PT_TSTRING,	0x1013)
#endif

#ifndef STORE_HTML_OK
#define	STORE_HTML_OK ((ULONG) 0x00010000)
#endif

#ifndef PR_SMTP_ADDRESS
#ifdef UNICODE
#define PR_SMTP_ADDRESS 0x39FE001F
#else
#define PR_SMTP_ADDRESS 0x39FE001E
#endif
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -