我用163的smtp服务器在验证是提示错误535: authentication failed是怎么回事啊我注册的是163的帐号啊。 Base64_Code((unsigned char *)usersrc,(unsigned char *)userdes);
Base64_Code((unsigned char *)passsrc,(unsigned char *)passdes); send_data = "EHLO Localhost\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
} if(!GetResponse())
return FALSE;
send_data = "AUTH LOGIN\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
}
if(!GetResponse())
return FALSE;
wsprintf(ch,"%s\r\n",userdes);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
closesocket(s);
return FALSE;
} if(!GetResponse())
return FALSE;
wsprintf(ch,"%s\r\n",passdes);
//TRACE("ch = %s\n",ch);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
} if(!GetResponse())
return FALSE;这是登陆时候的源码,错误就是在
wsprintf(ch,"%s\r\n",passdes);
//TRACE("ch = %s\n",ch);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
}
if(!GetResponse())
return FALSE;
这个地方的应答是返回的,大家帮忙看一下到底有什么问题啊
Base64_Code((unsigned char *)passsrc,(unsigned char *)passdes); send_data = "EHLO Localhost\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
} if(!GetResponse())
return FALSE;
send_data = "AUTH LOGIN\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
}
if(!GetResponse())
return FALSE;
wsprintf(ch,"%s\r\n",userdes);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
closesocket(s);
return FALSE;
} if(!GetResponse())
return FALSE;
wsprintf(ch,"%s\r\n",passdes);
//TRACE("ch = %s\n",ch);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
} if(!GetResponse())
return FALSE;这是登陆时候的源码,错误就是在
wsprintf(ch,"%s\r\n",passdes);
//TRACE("ch = %s\n",ch);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
return FALSE;
}
if(!GetResponse())
return FALSE;
这个地方的应答是返回的,大家帮忙看一下到底有什么问题啊
解决方案 »
- 如何将别人代码中的的一些新功能整合到自己的程序中
- 利用ACE库开发的程序出现link错误,请高手解答,谢谢
- 如何获将汉字转换为数字(ASCII)
- 一个winsock多线程从exe改写成DLL调用后,传输性能急剧下降
- 请教一个问题:如何判断我到了文本文件的一行的末尾?即是判断何时换行????
- 关于线程的简单问题,急,请各位赐教
- 关于vc中遍历指定目录下所有路径
- 各位给我推荐本书好吗?
- 高分求助,,,关于对字符串按高低位取值的问题????(在线等待)
- 求教:在linux中对windows的访问问题
- 启用MEDIASERVER的一个插件时,提示0x80070005错误,时什么原因阿?
- 求助:关于DEFINE_GUID的问题
void CSmtp::Base64_Code( unsigned char *chsrc, unsigned char *chdes)
{
char chadd[3];
unsigned char temp[4],t;
int len,i;
len = strlen((char *)chsrc);
while(len>=3)
{
temp[0] = (*chsrc)>>2;
t = (*chsrc & 0x03)<<4;
temp[1] = (*(chsrc+1)>>4)|t;
t = ((*(chsrc+1)<<2) & 0x3f);
temp[2] = (*(chsrc+2)>>6)|t;
temp[3] = (*(chsrc+2) & 0x3f); for(i=0;i<4;i++)
{
if(temp[i]>=0 && temp[i]<=25)
*(chdes+i) = temp[i]+65;
if(temp[i]>=26 && temp[i]<=51)
*(chdes+i) = temp[i]+71;
if(temp[i]>=52 && temp[i]<=61)
*(chdes+i) = temp[i]-4;
if(temp[i]==62)
*(chdes+i) = 43;
if(temp[i]==63)
*(chdes+i) = 47;
}
len -= 3;
chsrc += 3;
chdes += 4;
}
if(len!=0)
{
for(i=0;i<3;i++)
chadd[i] = 0;
memcpy(chadd,chsrc,len); temp[0] = chadd[0]>>2;
t = (chadd[0] & 0x03)<<4;
temp[1] = (chadd[1]>>4)|t;
t = ((chadd[1]<<2) & 0x3f);
temp[2] = (chadd[2]>>6)|t;
temp[3] = chadd[2] & 0x3f; for(i=0;i<4;i++)
{
if(temp[i]>=0 && temp[i]<=25 && (i==0 || i==1)) *(chdes+i) = temp[i]+65;
else *(chdes+i) = 61;
if(temp[i]>=26 && temp[i]<=51) *(chdes+i) = temp[i]+71;
else if(temp[i]>=52 && temp[i]<=61) *(chdes+i) = temp[i]-4;
else if(temp[i]==62) *(chdes+i) = 43;
else if(temp[i]==63) *(chdes+i) = 47;
}
chdes += 4;
*chdes = '\0';
return;
}
*chdes = '\0';
}void CSmtp::Base64_Decode( unsigned char *chsrc, unsigned char *chdes)
{
unsigned char temp[4],t;
int len,i;
len = strlen((char *)chdes);
while(len>=4)
{
for(i=0;i<4;i++)
{
if(*(chdes+i)>=65 && *(chdes+i)<=90)
temp[i] = *(chdes+i)-65;
if(*(chdes+i)>=97 && *(chdes+i)<=122)
temp[i] = *(chdes+i)-71;
if(*(chdes+i)>=48 && *(chdes+i)<=57)
temp[i] = *(chdes+i)+4;
if(*(chdes+i)==43)
temp[i] = 62;
if(*(chdes+i)==47)
temp[i] = 63;
if(*(chdes+i)==61)
temp[i] = 0;
}
t = (temp[1]>>4)&0x03;
*chsrc = (temp[0]<<2)|t;
t = (temp[2]>>2)&0x0f;
*(chsrc+1) = (temp[1]<<4)|t;
t = temp[3];
*(chsrc+2) = (temp[2]<<6)|t; chsrc += 3;
chdes += 4;
len -= 4;
}
chsrc -= 3;
for(i=0;i<3;i++)
{
if(*(chsrc+i) == 0)
{
*(chsrc+i) = '\0';
break;
}
}
if(i>=2)
*(chsrc+3) = '\0';
}