📄 smtpmodel.cpp
字号:
CString strGroupUserIniPath=strMailPathTemp+STR_FILENAME_GROUPUSERLIST;
CString strFile;
GetContentFromTextFile(strGroupUserIniPath,&strFile);
int nUserCount=GetGroupLineCountFromMem(strFile,strGroupName);
SAFEARRAYBOUND safeBound[2];
safeBound[0].cElements=nUserCount;
safeBound[0].lLbound=0;
safeBound[1].cElements=6;
safeBound[1].lLbound=0;
VariantInit(pMemberList);
pMemberList->vt=VT_VARIANT | VT_ARRAY;
pMemberList->parray=SafeArrayCreate(VT_VARIANT,2,safeBound);
long lDimension[2];
int nNum=0;
CString strTempLine=STR_KEY_GROUPNAME+strGroupName+STR_KEY_FIELDSPACE;
while(!strFile.IsEmpty())
{
int nEnd=strFile.Find("\n");
CString strTemp="";
if(nEnd<0)
{
strTemp=strFile;
strFile="";
}
else
{
strTemp=strFile.Left(nEnd);
strFile=strFile.Mid(++nEnd);
}
strTemp.TrimLeft();strTemp.TrimRight();
if(strTemp.IsEmpty())
continue;
int nStart=strTemp.Find(strTempLine);
if(nStart<0)
continue;
CString strMemberId=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERID,";");
strMemberId.TrimLeft();strMemberId.TrimRight();
lDimension[0]=nNum;
lDimension[1]=0;
CComVariant cvtMemberId(strMemberId);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberId);
CString strMemberName=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERNAME,";");
strMemberName.TrimLeft();strMemberName.TrimRight();
lDimension[0]=nNum;
lDimension[1]=1;
CComVariant cvtMemberName(strMemberName);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberName);
CString strMemberNick=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERNICK,";");
strMemberNick.TrimLeft();strMemberNick.TrimRight();
lDimension[0]=nNum;
lDimension[1]=2;
CComVariant cvtMemberNick(strMemberNick);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberNick);
CString strMemberAddr=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERADDR,";");
strMemberAddr.TrimLeft();strMemberAddr.TrimRight();
lDimension[0]=nNum;
lDimension[1]=3;
CComVariant cvtMemberAddr(strMemberAddr);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberAddr);
CString strMemberRemark=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERREMARK,";");
strMemberRemark.TrimLeft();strMemberRemark.TrimRight();
lDimension[0]=nNum;
lDimension[1]=4;
CComVariant cvtMemberRemark(strMemberRemark);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberRemark);
CString strMemberTel=GetValueByKeyFromBuf(strTemp,STR_KEY_MEMBERTEL,";");
strMemberTel.TrimLeft();strMemberTel.TrimRight();
lDimension[0]=nNum;
lDimension[1]=5;
CComVariant cvtMemberTel(strMemberTel);
SafeArrayPutElement(pMemberList->parray,lDimension,&cvtMemberTel);
nNum++;
}
return S_OK;
}
STDMETHODIMP CSmtpModel::GetGroupListForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT *pGroupList)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty())
return S_FALSE;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
CString strGroupIniPath=strMailPathTemp+STR_FILENAME_GROUPLIST;
CString strFile;
GetContentFromTextFile(strGroupIniPath,&strFile);
int nGroupCount=GetLineCountFromMem(strFile);
SAFEARRAYBOUND safeBound[1];
safeBound[0].cElements=nGroupCount;
safeBound[0].lLbound=0;
VariantInit(pGroupList);
pGroupList->vt=VT_VARIANT | VT_ARRAY;
pGroupList->parray=SafeArrayCreate(VT_VARIANT,1,safeBound);
long lDimension[1];
int nNum=0;
while(!strFile.IsEmpty())
{
int nEnd=strFile.Find("\n");
CString strTemp="";
if(nEnd<0)
{
strTemp=strFile;
strFile="";
}
else
{
strTemp=strFile.Left(nEnd);
strFile=strFile.Mid(++nEnd);
}
strTemp.TrimLeft();strTemp.TrimRight();
if(strTemp.IsEmpty())
continue;
CString strGroupName=GetValueByKeyFromBuf(strTemp,STR_KEY_GROUPNAME);
strGroupName.TrimLeft();strGroupName.TrimRight();
lDimension[0]=nNum;
CComVariant cvtGroupName(strGroupName);
SafeArrayPutElement(pGroupList->parray,lDimension,&cvtGroupName);
nNum++;
}
return S_OK;
}
STDMETHODIMP CSmtpModel::AddGroupUserForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstGroupName, VARIANT bstMemberName,
VARIANT bstMemberNick, VARIANT bstMemberAddr,
VARIANT bstMemberTel, VARIANT bstMemberRemark)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
char* pGroupName;
char* pMemberName;
char* pMemberNick;
char* pMemberAddr;
char* pMemberTel;
char* pMemberRemark;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOCHAR(bstGroupName,pGroupName);
VARIANTTOCHAR(bstMemberName,pMemberName);
VARIANTTOCHAR(bstMemberNick,pMemberNick);
VARIANTTOCHAR(bstMemberAddr,pMemberAddr);
VARIANTTOCHAR(bstMemberTel,pMemberTel);
VARIANTTOCHAR(bstMemberRemark,pMemberRemark);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
CString strGroupName=pGroupName;
CString strMemberName=pMemberName;
CString strMemberNick=pMemberNick;
CString strMemberAddr=pMemberAddr;
CString strMemberTel=pMemberTel;
CString strMemberRemark=pMemberRemark;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
strGroupName.TrimLeft();strGroupName.TrimRight();
strMemberName.TrimLeft();strMemberName.TrimRight();
strMemberNick.TrimLeft();strMemberNick.TrimRight();
strMemberAddr.TrimLeft();strMemberAddr.TrimRight();
strMemberTel.TrimLeft();strMemberTel.TrimRight();
strMemberRemark.TrimLeft();strMemberRemark.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty()||strGroupName.IsEmpty())
return S_FALSE;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
::CreateDirectory(strMailPathTemp,NULL);
CString strGroupUserIniPath=strMailPathTemp+STR_FILENAME_GROUPUSERLIST;
WriteGroupUserToIni(strGroupUserIniPath,strGroupName,strMemberName,
strMemberNick,strMemberAddr,strMemberTel,strMemberRemark);
return S_OK;
}
STDMETHODIMP CSmtpModel::AddGroupNameForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstGroupName)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
char* pGroupName;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOCHAR(bstGroupName,pGroupName);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
CString strGroupName=pGroupName;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
strGroupName.TrimLeft();strGroupName.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty()||strGroupName.IsEmpty())
return S_FALSE;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
::CreateDirectory(strMailPathTemp,NULL);
CString strGroupIniPath=strMailPathTemp+STR_FILENAME_GROUPLIST;
WriteGroupNameToIni(strGroupIniPath,strGroupName);
return S_OK;
}
STDMETHODIMP CSmtpModel::CreateAssistInfoForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstRejectMail,
VARIANT bstEnableReply,
VARIANT bstAutoReplyContent)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
char* pRejectMail;
char* pEnableReply;
char* pAutoReplyContent;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOCHAR(bstRejectMail,pRejectMail);
VARIANTTOCHAR(bstEnableReply,pEnableReply);
VARIANTTOCHAR(bstAutoReplyContent,pAutoReplyContent);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
CString strRejectMail=pRejectMail;
CString strEnableReply=pEnableReply;
CString strAutoReplyContent=pAutoReplyContent;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty())
return S_FALSE;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
::CreateDirectory(strMailPathTemp,NULL);
CString strAssistIniPath=strMailPathTemp+STR_FILENAME_ASSISTINFO;
HANDLE hFile=CreateFile(strAssistIniPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
if((HANDLE)hFile==INVALID_HANDLE_VALUE)
return S_OK;
CString strTemp=STR_KEY_REJECTMAIL;
strTemp+=strRejectMail;
strTemp+="\r\n";
WRITESTRINGTOFILE(strTemp);
strTemp=STR_KEY_ENABLEREPLY;
strTemp+=strEnableReply;
strTemp+="\r\n";
WRITESTRINGTOFILE(strTemp);
strTemp=STR_KEY_AUTOREPLYCONTENT;
strTemp+=strAutoReplyContent;
strTemp+="\r\n";
WRITESTRINGTOFILE(strTemp);
CloseHandle(hFile);
return S_OK;
}
STDMETHODIMP CSmtpModel::CreateLevelInfoForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstMailBoxSize, VARIANT bstUserLevel)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
long lMailBoxSize;
long lUserLevel;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOLONG(bstMailBoxSize,lMailBoxSize);
VARIANTTOLONG(bstUserLevel,lUserLevel);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty())
return S_FALSE;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
::CreateDirectory(strMailPathTemp,NULL);
CString strLevelIniPath=strMailPathTemp+STR_FILENAME_LEVELINFO;
HANDLE hFile=CreateFile(strLevelIniPath,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,(HANDLE)NULL);
if((HANDLE)hFile==INVALID_HANDLE_VALUE)
return S_OK;
CString strTemp=STR_KEY_MAILBOXSIZE;
CString strMailBoxSize;
strMailBoxSize.Format("%d",lMailBoxSize);
strTemp+=strMailBoxSize;
strTemp+="\r\n";
WRITESTRINGTOFILE(strTemp);
strTemp=STR_KEY_USERLEVEL;
CString strUserLevel;
strUserLevel.Format("%d",lUserLevel);
strTemp+=strUserLevel;
strTemp+="\r\n";
WRITESTRINGTOFILE(strTemp);
CloseHandle(hFile);
return S_OK;
}
STDMETHODIMP CSmtpModel::CreateMailDirForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstMailOldIndex, VARIANT *pMailNewIndex)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
char* pMailOldIndex;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOCHAR(bstMailOldIndex,pMailOldIndex);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
CString strMailOldIndex=pMailOldIndex;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
strMailOldIndex.TrimLeft();strMailOldIndex.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty())
return S_FALSE;
CComBSTR bstReturn=strMailOldIndex;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
strMailPathTemp+=strUserId;
strMailPathTemp+='\\';
::CreateDirectory(strMailPathTemp,NULL);
//If the old index exist then we must check the index whether is true
//If the old Index is false, we must create a new index for user
//If the old index is true,we return old index to user
if(!strMailOldIndex.IsEmpty())
{
CString strPath=strMailPathTemp;
strPath+=strMailOldIndex;
strPath+='\\';
//if creating path is successful,the old index is false
BOOL bResult=::CreateDirectory(strPath,NULL);
if(bResult)
DeleteDirectory(strPath);
else
{
pMailNewIndex->vt=VT_BSTR;
pMailNewIndex->bstrVal=bstReturn.Detach();
return S_OK;
}
}
CString strMailNewIndex=CreateMailDirForWeb(strMailPath,strUserId);
bstReturn=strMailNewIndex;
pMailNewIndex->vt=VT_BSTR;
pMailNewIndex->bstrVal=bstReturn.Detach();
return S_OK;
}
STDMETHODIMP CSmtpModel::DeleteAttachByNameForWeb(VARIANT bstMailPath, VARIANT bstUserId,
VARIANT bstMsgId, VARIANT bstAttachName)
{
// TODO: Add your implementation code here
USES_CONVERSION;
char* pMailPath;
char* pUserId;
char* pMsgIdTemp;
char* pAttachName;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
VARIANTTOCHAR(bstMsgId,pMsgIdTemp);
VARIANTTOCHAR(bstAttachName,pAttachName);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
CString strMsgId=pMsgIdTemp;
CString strAttachName=pAttachName;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
strMsgId.TrimLeft();strMsgId.TrimRight();
strAttachName.TrimLeft();strAttachName.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty()||strMsgId.IsEmpty()||strAttachName.IsEmpty())
return S_OK;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
strMailPath+=strUserId;
strMailPath+='\\';
strMailPath+=strMsgId;
strMailPath+='\\';
strMailPath+=STR_DEFAULT_ATTACHMENT;
strMailPath+='\\';
strMailPath+=strAttachName;
::DeleteFile(strMailPath);
return S_OK;
}
STDMETHODIMP CSmtpModel::ClearMailBoxSpace(VARIANT bstMailPath, VARIANT bstUserId)
{
USES_CONVERSION;
char* pMailPath;
char* pUserId;
VARIANTTOCHAR(bstMailPath,pMailPath);
VARIANTTOCHAR(bstUserId,pUserId);
CString strMailPath=pMailPath;
CString strUserId=pUserId;
strMailPath.TrimLeft();strMailPath.TrimRight();
strUserId.TrimLeft();strUserId.TrimRight();
if(strMailPath.IsEmpty()||strUserId.IsEmpty())
return S_OK;
if(strMailPath.GetAt(strMailPath.GetLength()-1)!='\\')
strMailPath+='\\';
strMailPath+=strUserId;
strMailPath+='\\';
CString strMailPathTemp=strMailPath;
// TODO: Add your implementation code here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -