首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

使用pop会话接收邮件的一个非常奇怪的有关问题,真的非常非常奇怪~

2012-03-26 
使用pop会话接收邮件的一个非常奇怪的问题,真的非常非常奇怪~~使用pop3协议收发邮件,前面和服务器的会话是

使用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;
}

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

[解决办法]
关注...

热点排行