//發送命令,以此類推...
void SocketRM::GetUIDL()
{
send(ServMail,"uidl\r\n",strlen("uidl\r\n"),0);
recv(ServMail,(LPSTR)recvbuf,sizeof(recvbuf),0);
//std::cout<<"Serve:"<<recvbuf;
memset(recvbuf,0,20000);
//std::cout<<"Serve:"<<std::endl;
};
//得到郵件頭信息void SocketRM::GetEmailInfo()
{
//查看"某"個郵件的前1行
std::cout<<"Which Email do you want?";
std::string Choice;
std::cin>>Choice;
Order="top "+Choice+" 1\r\n";
send(ServMail,Order.c_str(),strlen(Order.c_str()),0);
recv(ServMail,(LPSTR)recvbuf,sizeof(recvbuf),0);
//std::cout<<"Serve:"<<recvbuf;
memset(recvbuf,0,20000);
//std::cout<<"Serve:"<<std::endl;
while(true)
{
//之所以要收取兩次SOCKET的緩存區,是POP3中的retr命令
//該命令會先從服務器中下載一個郵件信息——大小
//然後會在下載郵件原文,所以要從服務器上下載兩次,也就是要兩次存入SOCKET緩存區
//那麼就需要recv()函數進行2次COPY.
int val=recv(ServMail,(LPSTR)recvbuf,sizeof(recvbuf),0);
std::cout<<recvbuf;
bufStr+=recvbuf;
memset(recvbuf,0,20000);
//對於從服務器收到的郵件原文的數據:
//對於最後的結尾,有:
//recvbuf[val]=='\0',recvbuf[val-1]=='\n',recvbuf[val-2]=='\r',標誌符
if(recvbuf[val]=='\0')
break;
}
bufStr=bufStr.c_str();
};
//End...