SASL认证问题
写一个发邮件的小工具,卡在SASL认证这里,用SASL_LOGIN,可是始终服务器返回错误,请高手指教
一下是部分相关代码
switch(smtp_client->auth_method)
{
case SASL_LOGIN:
to64frombits(crypt_buf,(const char *)(smtp_client->smtp_user),sizeof(smtp_client->smtp_user));
strcpy(buf,"AUTH LOGIN ");
strcat(buf,crypt_buf);
strcat(buf,"rn");
if(smtp_send(fd,buf)<0)
return -1;
memset(buf,0,sizeof(buf));
if((smtp_recv(fd,buf))==NULL)
return -1;
if(strncmp(buf,"334",code_len)!=0)
return -1;
memset(buf,0,sizeof(buf));
memset(crypt_buf,0,sizeof(crypt_buf));
to64frombits(crypt_buf,(const char *)(smtp_client->smtp_pass),sizeof(smtp_client->smtp_pass));
strcpy(buf,crypt_buf);
strcat(buf,"rn");
if(smtp_send(fd,buf)<0)
return -1;
memset(buf,0,sizeof(buf));
if((smtp_recv(fd,buf))==NULL)
return -1;
if(strncmp(buf,"235",code_len)!=0)
return -1;
else
return 1;
。。。。。。。。。。。。。。。。。。。。
void to64frombits(unsigned char *out, const unsigned char *in, int inlen)
{
for (; inlen >= 3; inlen -= 3)
{
*out++ = base64digits[in[0] >> 2];
*out++ = base64digits[((in[0] << 4) & 0x30) | (in[1] >> 4)];
*out++ = base64digits[((in[1] << 2) & 0x3c) | (in[2] >> 6)];
*out++ = base64digits[in[2] & 0x3f];
in += 3;
}
if (inlen > 0)
{
unsigned char fragment;
*out++ = base64digits[in[0] >> 2];
fragment = (in[0] << 4) & 0x30;
if (inlen > 1)
fragment |= in[1] >> 4;
*out++ = base64digits[fragment];
*out++ = (inlen < 2) ? '=' : base64digits[(in[1] << 2) & 0x3c];
*out++ = '=';
}
*out = '';
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从文件读入参数的时候,多了一个回车,唉,哭死。搞定了