![]() |
|
|
目前互连网上,EMAIL的使用是越来越广泛了。在所有的TCP连接线路中,大概有一半的线路是用来收发EMAIL的。因此,许多网络应用程序要想离开POP3协议是不可能的。 m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(USER_CHECK)==FALSE) returnFALSE; wsprintf(buf,"PASS%s\r\n",(LPCSTR)Password); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(PASSWORD_CHECK)==FALSE) returnFALSE; returnTRUE; } } BOOLCPop::Delete(int&MsgNumber) { charbuf[512]; wsprintf(buf,"DELE%d\r\n",MsgNumber); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(DELETE_CHECK)==FALSE) returnFALSE; else returnTRUE; } BOOLCPop::Disconnect() { charbuf[512]; wsprintf(buf,"QUIT\r\n"); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(QUIT_CHECK)==FALSE) returnFALSE; else returnTRUE; } BOOLCPop::Noop() { charbuf[512]; wsprintf(buf,"NOOP\r\n"); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(NOOP_CHECK)==FALSE) returnFALSE; else returnTRUE; } //ReturntheMsgSizeforgivenmsgnumber intCPop::GetMessageSize(intMsgNumber) { if(m_SizeOfMsg.GetSize()<MsgNumber+1) return0; else returnm_SizeOfMsg[MsgNumber+1]; } BOOLCPop::Reset() { charbuf[512]; wsprintf(buf,"RSET\r\n"); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(RSET_CHECK)==FALSE) returnFALSE; else returnTRUE; } //MsgContentswillholdthemsgbody BOOLCPop::Retrieve(intMsgNumber) { charbuf[512]; wsprintf(buf,"RETR%d\r\n",MsgNumber); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(RETR_CHECK)==FALSE) returnFALSE; else returnTRUE; } BOOLCPop::Statistics() { charbuf[512]; wsprintf(buf,"STAT\r\n"); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(STAT_CHECK)==FALSE) returnFALSE; else returnTRUE; } CStringCPop::GetMsgContents() { returnm_MsgContents; } intCPop::GetNumberOfMails() { returnm_NumberMail; } intCPop::GetTotalMailSize() { returnm_TotalSize; } BOOLCPop::Connect() { Connect(m_Host,m_User,m_Password); returnTRUE; } voidCPop::SetHost(CString&Host) { m_Host=Host; } CStringCPop::GetHost() { returnm_Host; } voidCPop::SetUser(CString&User) { m_User=User; } CStringCPop::GetUser() { returnm_User; } voidCPop::SetPassword(CString&Password) { m_Password=Password; } CStringCPop::GetPassword() { returnm_Password; } BOOLCPop::CheckResponse(intResponseType) { charbuf[1000]; for(inti=0;i<512;i++) buf[i]='\0'; m_PopServer.Receive(buf,sizeof(buf)); switch(ResponseType) { caseCONNECTION_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("BadConnection"); returnFALSE; } break; caseUSER_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("BadUserName"); returnFALSE; } break; casePASSWORD_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("BadPasswordName"); returnFALSE; } break; caseQUIT_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringQUIT"); returnFALSE; } break; caseDELETE_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringDELE"); returnFALSE; } break; caseRSET_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringRSET"); returnFALSE; } break; caseSTAT_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringSTAT"); returnFALSE; } else { BOOLEmailNumber=TRUE; for(char*p=buf;*p!='\0';p++) { if(*p=='\t'||*p=='') { if(EmailNumber==TRUE) { m_NumberMail=atoi(p); EmailNumber=FALSE; } else { m_TotalSize=atoi(p); returnTRUE; } } } } break; caseNOOP_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringNOOP"); returnFALSE; } break; caseLIST_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringLIST"); returnFALSE; } else { m_PopServer.Receive(buf,sizeof(buf)); for(char*p=buf;*p!='.';p++) if(*p=='\t'||*p=='') m_SizeOfMsg.Add(atoi(p)); } break; caseRETR_CHECK: if(strnicmp(buf,"-ERR",4)==0) { m_ErrorMessage=_T("ErroroccuredduringRETR"); returnFALSE; } else { chartemp[9000]; m_PopServer.Receive(temp,sizeof(temp)); m_MsgContents=temp; } break; } returnTRUE; } CStringCPop::GetErrorMessage() { returnm_ErrorMessage; } BOOLCPop::List() { charbuf[512]; wsprintf(buf,"LIST\r\n"); m_PopServer.Send(buf,strlen(buf)); if(CheckResponse(LIST_CHECK)==FALSE) returnFALSE; else returnTRUE; }
上一篇:什么叫pop3服务 下一篇:POP3协议命令原始码及工作原理
|