📄 smsmessage.cpp
字号:
#include "SmsMessage.h"
#include "MAPIEx.h"
SmsMessage::SmsMessage()
{
m_pMessage=NULL;
m_pRecipients=NULL;
m_pMAPI=NULL;
m_entryID.cb=0;
SetEntryID(NULL);
}
SmsMessage::SmsMessage(SmsMessage& message)
{
m_pMessage=NULL;
m_pRecipients=NULL;
m_pMAPI=NULL;
m_entryID.cb=0;
*this=message;
}
SmsMessage::~SmsMessage()
{
Close();
}
void SmsMessage::SetEntryID(SBinary* pEntryID)
{
if(m_entryID.cb) delete [] m_entryID.lpb;
m_entryID.lpb=NULL;
if(pEntryID) {
m_entryID.cb=pEntryID->cb;
if(m_entryID.cb) {
m_entryID.lpb=new BYTE[m_entryID.cb];
memcpy(m_entryID.lpb,pEntryID->lpb,m_entryID.cb);
}
} else {
m_entryID.cb=0;
}
}
BOOL SmsMessage::Open(MAPIEx* pMAPI,SBinary entryID,DWORD dwMessageFlags)
{
Close();
m_pMAPI=pMAPI;
m_dwMessageFlags=dwMessageFlags;
ULONG ulObjType;
if(m_pMAPI->GetFolder()->OpenEntry(entryID.cb,(LPENTRYID)entryID.lpb,NULL,MAPI_BEST_ACCESS,&ulObjType,(LPUNKNOWN*)&m_pMessage)!=S_OK)
{
return FALSE;
}
SetEntryID(&entryID);
FillSenderName();
FillSenderEmail();
FillSubject();
return TRUE;
}
void SmsMessage::Close()
{
SetEntryID(NULL);
RELEASE(m_pMessage);
m_pMAPI=NULL;
}
HRESULT SmsMessage::GetProperty(ULONG ulProperty,LPSPropValue &prop)
{
ULONG ulPropCount;
ULONG p[2]={ 1,ulProperty };
return m_pMessage->GetProps((LPSPropTagArray)p, MAPI_UNICODE, &ulPropCount, &prop);
}
void SmsMessage::FillSenderName()
{
LPSPropValue pProp;
if(GetProperty(PR_SENDER_NAME,pProp)==S_OK) {
m_strSenderName=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSenderName=_T("");
}
void SmsMessage::FillSubject()
{
LPSPropValue pProp;
if(GetProperty(PR_SUBJECT,pProp)==S_OK) {
m_strSubject=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSubject=_T("");
}
void SmsMessage::FillSenderEmail()
{
LPSPropValue pProp;
if(GetProperty(PR_SENDER_EMAIL_ADDRESS,pProp)==S_OK) {
m_strSenderEmail=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSenderEmail=_T("");
}
LPCTSTR SmsMessage::GetSenderName()
{
LPSPropValue pProp;
if(GetProperty(PR_SENDER_NAME,pProp)==S_OK) {
m_strSenderName=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSenderName=_T("");
return m_strSenderName;
}
LPCTSTR SmsMessage::GetSubject()
{
LPSPropValue pProp;
if(GetProperty(PR_SUBJECT,pProp)==S_OK) {
m_strSubject=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSubject=_T("");
return m_strSubject;
}
LPCTSTR SmsMessage::GetSenderEmail()
{
LPSPropValue pProp;
if(GetProperty(PR_SENDER_EMAIL_ADDRESS,pProp)==S_OK) {
m_strSenderEmail=MAPIEx::GetValidString(*pProp);
MAPIFreeBuffer(pProp);
}
else m_strSenderEmail=_T("");
return m_strSenderEmail;
}
BOOL SmsMessage::GetReceivedTime(SYSTEMTIME& tmReceived)
{
LPSPropValue pProp;
if(GetProperty(PR_MESSAGE_DELIVERY_TIME,pProp)==S_OK) {
FILETIME tmLocal;
FileTimeToLocalFileTime(&pProp->Value.ft,&tmLocal);
FileTimeToSystemTime(&tmLocal,&tmReceived);
MAPIFreeBuffer(pProp);
return TRUE;
}
return FALSE;
}
BOOL SmsMessage::GetReceivedTime(LPCTSTR& strReceivedTime,LPCTSTR szFormat)
{
SYSTEMTIME tm;
if(GetReceivedTime(tm)) {
TCHAR szTime[256];
if(!szFormat) szFormat=_T("yyyy-MM-dd HH:mm:ss");
GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szFormat,szTime,256);
GetTimeFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szTime,szTime,256);
strReceivedTime=szTime;
return TRUE;
}
return FALSE;
}
BOOL SmsMessage::GetSubmitTime(SYSTEMTIME& tmSubmit)
{
LPSPropValue pProp;
if(GetProperty(PR_LAST_MODIFICATION_TIME,pProp)==S_OK) {
FILETIME tmLocal;
FileTimeToLocalFileTime(&pProp->Value.ft,&tmLocal);
FileTimeToSystemTime(&tmLocal,&tmSubmit);
MAPIFreeBuffer(pProp);
return TRUE;
}
return FALSE;
}
BOOL SmsMessage::GetSubmitTime(LPCTSTR& strSubmitTime,LPCTSTR szFormat)
{
SYSTEMTIME tm;
if(GetSubmitTime(tm)) {
TCHAR szTime[256];
if(!szFormat) szFormat=_T("yyyy-MM-dd HH:mm:ss");
GetDateFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szFormat,szTime,256);
GetTimeFormat(LOCALE_SYSTEM_DEFAULT,0,&tm,szTime,szTime,256);
strSubmitTime=szTime;
return TRUE;
}
return FALSE;
}
BOOL SmsMessage::GetRecipients()
{
if(!m_pMessage) return FALSE;
RELEASE(m_pRecipients);
if(m_pMessage->GetRecipientTable(MAPI_UNICODE,&m_pRecipients)!=S_OK) return FALSE;
return TRUE;
}
BOOL SmsMessage::GetNextRecipient(LPCTSTR& strName,LPCTSTR& strEmail,int& nType)
{
if(!m_pRecipients) return FALSE;
LPSRowSet pRows=NULL;
BOOL bResult=FALSE;
if(m_pRecipients->QueryRows(1,0,&pRows)==S_OK) {
if(pRows->cRows) {
nType=pRows->aRow[0].lpProps[PROP_RECIPIENT_TYPE].Value.ul;
strName=MAPIEx::GetValidString(pRows->aRow[0].lpProps[PROP_RECIPIENT_NAME]);
strEmail=MAPIEx::GetValidString(pRows->aRow[0].lpProps[PROP_RECIPIENT_EMAIL]);
bResult=TRUE;
}
FreeProws(pRows);
}
MAPIFreeBuffer(pRows);
return bResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -