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

📄 netmapi.cpp

📁 A (hopefully) complete extended MAPI wrapper for WinXP, WinCE, and .NET.
💻 CPP
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// File: NetMAPI.cpp
// Description: Wrapper class for Extended MAPI, meant to be called by .NET
//
// Copyright (C) 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
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "MAPIExPCH.h"
#include "NetMAPI.h"

static CNetMAPI g_NetMAPI;

BOOL MAPIInit()
{
	return g_NetMAPI.Init();
}

void MAPITerm()
{
	g_NetMAPI.Term();
}

BOOL MAPICreateMessage(LPCTSTR szSubject,LPCTSTR szBody,int nPriority)
{
	return g_NetMAPI.CreateMessage(szSubject,szBody,nPriority);
}

BOOL MAPIAddRecipient(LPCTSTR szEmail,int nType)
{
	return g_NetMAPI.AddRecipient(szEmail,nType);
}

BOOL MAPIAddAttachment(LPCTSTR szPath) 
{
	return g_NetMAPI.AddAttachment(szPath);
} 

BOOL MAPISend()
{
	return g_NetMAPI.Send();
}

BOOL MAPIGetContents()
{
	return g_NetMAPI.GetContents();
}

BOOL MAPIGetNextMessage(BOOL bUnreadOnly)
{
	return g_NetMAPI.GetNextMessage(bUnreadOnly);
}

void MAPIGetSenderName(LPTSTR sz,int nMaxLength)
{
	return g_NetMAPI.GetSenderName(sz,nMaxLength);
}

void MAPIGetSenderEmail(LPTSTR sz,int nMaxLength)
{
	return g_NetMAPI.GetSenderEmail(sz,nMaxLength);
}

void MAPIGetSubject(LPTSTR sz,int nMaxLength)
{
	return g_NetMAPI.GetSubject(sz,nMaxLength);
}

int MAPIGetBodyLength()
{
	return g_NetMAPI.GetBodyLength();
}

void MAPIGetBody(LPTSTR sz,int nMaxLength)
{
	return g_NetMAPI.GetBody(sz,nMaxLength);
}

int MAPIGetAttachmentCount() 
{ 
	return g_NetMAPI.GetAttachmentCount(); 
} 

BOOL MAPISaveAttachments(LPCTSTR szFolder,int nIndex) 
{ 
	return g_NetMAPI.SaveAttachments(szFolder,nIndex); 
} 

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CNetMAPI

CNetMAPI::CNetMAPI()
{
}

CNetMAPI::~CNetMAPI()
{
}

BOOL CNetMAPI::Init()
{
	if(!CMAPIEx::Init()) return FALSE;
	if(!m_in.Login() || !m_in.OpenMessageStore() || !m_in.OpenInbox() || !m_out.Login() || !m_out.OpenMessageStore() || !m_out.OpenOutbox()) {
		Term();
		return FALSE;
	}
	return TRUE;
}

void CNetMAPI::Term()
{
	m_message.Close();
	m_in.Logout();
	m_out.Logout();
	CMAPIEx::Term();
}

BOOL CNetMAPI::CreateMessage(LPCTSTR szSubject,LPCTSTR szBody,int nPriority)
{
	if(!m_message.Create(&m_out,nPriority)) return FALSE;
	m_message.SetSubject(szSubject);
	m_message.SetBody(szBody);
	return TRUE;
}

BOOL CNetMAPI::AddRecipient(LPCTSTR szEmail,int nType)
{
	return m_message.AddRecipient(szEmail,nType);
}

BOOL CNetMAPI::AddAttachment(LPCTSTR szPath)
{
	return m_message.AddAttachment(szPath);
}

BOOL CNetMAPI::Send()
{
	return m_message.Send();
}

BOOL CNetMAPI::GetContents()
{
	return m_in.GetContents();
}

BOOL CNetMAPI::GetNextMessage(BOOL bUnreadOnly)
{
	return m_in.GetNextMessage(m_message,bUnreadOnly);
}

void CNetMAPI::GetSenderName(LPTSTR sz,int nMaxLength)
{
	CopyString(sz,m_message.GetSenderName(),nMaxLength);
}

void CNetMAPI::GetSenderEmail(LPTSTR sz,int nMaxLength)
{
	CopyString(sz,m_message.GetSenderEmail(),nMaxLength);
}

void CNetMAPI::GetSubject(LPTSTR sz,int nMaxLength)
{
	CopyString(sz,m_message.GetSubject(),nMaxLength);
}

int CNetMAPI::GetBodyLength()
{
	CString strBody=m_message.GetBody();
	return strBody.GetLength();
}

void CNetMAPI::GetBody(LPTSTR sz,int nMaxLength)
{
	CopyString(sz,m_message.GetBody(),nMaxLength);
}

int CNetMAPI::GetAttachmentCount() 
{ 
	return m_message.GetAttachmentCount(); 
} 

BOOL CNetMAPI::SaveAttachments(LPCTSTR szFolder,int nIndex) 
{ 
	return m_message.SaveAttachments(szFolder,nIndex); 
} 

void CNetMAPI::CopyString(LPTSTR szDest,LPCTSTR szSrc,int nMaxLength)
{
#ifdef _UNICODE
	int nSrcLen=(int)wcslen(szSrc)+1;
#else
	int nSrcLen=(int)strlen(szSrc)+1;
#endif
	int nLen=min(nSrcLen,nMaxLength);
	memcpy(szDest,szSrc,sizeof(TCHAR)*nLen);
	if(nLen==nMaxLength) szDest[nMaxLength-1]=0;
}

⌨️ 快捷键说明

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