smtp 邮件问题 附代码 纠结死了 本帖最后由 z_boy 于 2010-04-06 18:36:55 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 smtp邮件发送类,支持ssl.http://download.csdn.net/source/2176969 smtp 是发送邮件的协议 不用登录的 helo from to data quit 这几个够了pop3才是接受的 要登录和密码这些命令 之前我有telnet,命令是没有问题的,可不知怎么回事,这么发过去就是不认! 我telnet时用我的邮箱发邮件他要求登陆的权限... 现在的SMTP 服务器 一般要账号登录的 登录模式有auth login和auth plain,具体的自己查查 新浪的,是auth login,我不发helo就能识别auth login,我发了helo就只识别helo,不识别auth login了...他只识别一条命令...真让我晕死... send ehlo user_namesend auth loginsend user_name // 这个用户名 要发送通过BASE64加密之后的用户名send password // 密码也要发送加密后的密码 这是我以前写的一段登陆CODECString cmd = "ehlo "; cmd += ::AfxAppPara.AfxUSER.UserName; cmd += "\r\n"; CString readInfo; this->SendCmdToServer(cmd); this->ReadResponceFromServer(readInfo, 1024); // 250 $ readInfo.Empty(); this->SendCmdToServer("auth login\r\n"); this->ReadResponceFromServer(readInfo, 1024); // 334 encodeLen = 1024; if(!::Base64Encode((const BYTE*)AfxAppPara.AfxUSER.UserName.GetBuffer(AfxAppPara.AfxUSER.UserName.GetLength()), AfxAppPara.AfxUSER.UserName.GetLength(),(BYTE*)encodeUserName, &encodeLen)){ MessageBox(NULL, "error: username", NULL, MB_OK); return; } encodeUserName[encodeLen + 1] ='\0'; cmd = this->encodeUserName; cmd += "\r\n"; readInfo.Empty(); this->SendCmdToServer(cmd); this->ReadResponceFromServer(readInfo, 1024); if(!::Base64Encode((const BYTE*)::AfxAppPara.AfxUSER.Password.GetBuffer(AfxAppPara.AfxUSER.Password.GetLength()), AfxAppPara.AfxUSER.Password.GetLength(), (BYTE*)this->encodePassword, &this->encodeLen)){ MessageBox(NULL, "error: password", NULL, MB_OK); return; } this->encodePassword[encodeLen + 1] ='\0'; cmd = this->encodePassword; cmd += "\r\n"; readInfo.Empty(); this->SendCmdToServer(cmd); this->ReadResponceFromServer(readInfo, 1024); 你确定你是25端口? 110是pop3的 我试过telnet服务器发邮件和接收 没问题的 发邮件不需要登录的 一看代码就知道,肯定学过mfc,写的很好,能把完整的代码发我一份吗,万分感激[email protected] 如何在对话框中同时播放3个avi视频? 高分请教UDP协议? .h文件里这样初始化string[]为什么不对? 开发一个客户端,是用sdi还是对话框,想在这个客户端实现播放视频的功能 我刚刚学习vc,有一个问题向各位高手请教 真诚求购----1990年"北京希望高级电脑技术公司"的<编译原理与实践>. 如何枚举注册表下的一个键下的所有子键呢! 怎样自己做一个MPEG-1/4/7编码、播放器 谁有这个文档? 请问C语言里面如何表达x的n次方? greentape请领分1 用OpenGL做界面,是不是就是Direct UI ? 关于文件读写的问题?
http://download.csdn.net/source/2176969
helo from to data quit 这几个够了pop3才是接受的 要登录和密码这些命令
之前我有telnet,命令是没有问题的,可不知怎么回事,这么发过去就是不认!
我telnet时用我的邮箱发邮件他要求登陆的权限...
send auth login
send user_name // 这个用户名 要发送通过BASE64加密之后的用户名
send password // 密码也要发送加密后的密码
cmd += ::AfxAppPara.AfxUSER.UserName;
cmd += "\r\n"; CString readInfo;
this->SendCmdToServer(cmd);
this->ReadResponceFromServer(readInfo, 1024); // 250
$
readInfo.Empty();
this->SendCmdToServer("auth login\r\n");
this->ReadResponceFromServer(readInfo, 1024); // 334 encodeLen = 1024;
if(!::Base64Encode((const BYTE*)AfxAppPara.AfxUSER.UserName.GetBuffer(AfxAppPara.AfxUSER.UserName.GetLength()),
AfxAppPara.AfxUSER.UserName.GetLength(),(BYTE*)encodeUserName, &encodeLen)){
MessageBox(NULL, "error: username", NULL, MB_OK);
return;
}
encodeUserName[encodeLen + 1] ='\0';
cmd = this->encodeUserName;
cmd += "\r\n"; readInfo.Empty();
this->SendCmdToServer(cmd);
this->ReadResponceFromServer(readInfo, 1024); if(!::Base64Encode((const BYTE*)::AfxAppPara.AfxUSER.Password.GetBuffer(AfxAppPara.AfxUSER.Password.GetLength()),
AfxAppPara.AfxUSER.Password.GetLength(), (BYTE*)this->encodePassword, &this->encodeLen)){
MessageBox(NULL, "error: password", NULL, MB_OK);
return;
}
this->encodePassword[encodeLen + 1] ='\0';
cmd = this->encodePassword;
cmd += "\r\n"; readInfo.Empty();
this->SendCmdToServer(cmd);
this->ReadResponceFromServer(readInfo, 1024);
你确定你是25端口? 110是pop3的
我试过telnet服务器发邮件和接收
没问题的 发邮件不需要登录的