读书人

使用pop会话接收邮件的一个非常奇怪的

发布时间: 2012-03-26 15:46:56 作者: rapoo

使用pop会话接收邮件的一个非常奇怪的问题,真的非常非常奇怪~~
使用pop3协议收发邮件,前面和服务器的会话是好好的
到了retr收邮件的时候,有时候会出现数据接收不正常,采用的是163服务器
(初步断定似乎是中文内容邮件并且内容采用了base64加密)
但是,注意但是!!!! 如果我设置了一个断点,只要设置了断点,而不管断点在任何位置,
然后用F5单步调试运行,就可以正常接收报文
如果说可能是延时的关系,这点我考虑过了,程序里延时并不影响会话
然后我就把我写的pop类文件拷出来单独调试
注意关键源代码没有改变任何内容,这下好了~~出现更离奇的事情
我正常运行接收的数据也正常,但是我一设置断点就出问题~~和前面正相反

有人实现pop出现过这样的问题吗,我把关键代码帖出来
代码写的很烂,希望大家不要笑话

char* CPop::RecvMail(int n)
{
if(n <=0 || n > MailNum) return NULL;
char buf[1024],*rawbuf; //原始邮件;
int totr = 0,skip = 5;
memset(buf,0,sizeof(buf));
ClientCmd(RETR,n); //发送retr字
recv(gSocket,buf,sizeof(buf),NULL);
if(!strnicmp(buf, "-ERR ",4) ) return NULL;
while(strnicmp(buf, "+OK ",3)){
memset(buf,0,sizeof(buf));
recv(gSocket,buf,sizeof(buf),NULL);
}

totr = atoi(buf + 4);//+OK(SPACE)
rawbuf = new char [totr+skip];
int rs = recv(gSocket,rawbuf,totr,NULL);
while(rawbuf[rs-3] != '. '){
rs = rs+recv(gSocket,rawbuf+rs,totr,NULL);
}
rawbuf[rs-1] = 0;
AfxMessageBox(rawbuf);

return rawbuf;
}

[解决办法]
没有碰到过,帮顶
[解决办法]
不会,学习。

[解决办法]
关注...

读书人网 >VC/MFC

热点推荐