📄 netmapi.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 + -