快速业务通道

用BCB开发有身份认证功能的Email程序

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
ring(0,3)=="334"){
    AddLog("正在验证身份......");
    b_ok =true;
   }
 }
 if(!b_ok){
  AddLog("登录失败,正在退出......");
  NMSMTP1->Disconnect();
  return;
 }
 rData="";
 Data=encode(Edit4->Text)+"\r\n"; //用户名转换为Base64编码。
 NMSMTP1->SendBuffer(Data.c_str(),Data.Length()); //发送用户名
 rData = WaitForReply(5);
 b_ok=false;
 if(rData.Length()>=3){
  // 334意味着服务器要求输入口令
  if(rData.TrimLeft().SubString(0,3)=="334"){
   AddLog("正在验证口令......");
   b_ok =true;
  }
 }
 if(!b_ok){
  AddLog("登录失败,正在退出......");
  NMSMTP1->Disconnect();
  return;
 }
 rData="";
 Data=encode(Edit5->Text)+"\r\n"; //口令转换成Base64编码。
 NMSMTP1->SendBuffer(Data.c_str(),Data.Length()); //发送口令
 rData=WaitForReply(5);
 b_ok = false;
 if(rData.Length()>=3){
  if(rData.TrimLeft().SubString(0,3)=="235"){
   AddLog("登录成功......");
   b_ok =true;
  }
 }
 if(!b_ok){
  AddLog("登录失败,正在退出......");
  NMSMTP1->Disconnect();
  return;
 }
}
SendMail->Enabled=true; //允许发送邮件
disconnect->Enabled=true; //允许断开连接
Logon1->Enabled=false; //不允许再次登录
}

3、MIME Base64编码转换

AnsiString TForm1::encode(AnsiString s)
{
 int m_len; //字符串长度
 int i; //循环变量
 int m_tmp; //临时变量
 AnsiString m_64code; //储存Base64编码的字符串
 char* m_s; //临时存储参数字符串

 //Base64字符表
 char m_64[]= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 m_len = s.Length(); //取得字符串长度
 m_s = s.c_str();
 m_64code=""; //返回串置空
 //处理3的倍数以内的字符
 for(i=0;i<m_len-m_len%3;i+=3){
  m_tmp=m_s[i]/4;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[i]%4*16 + m_s[i+1]/16;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[i+1]%16*4 + m_s[i+2]/64;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[i+2]%64;
  m_64code+=m_64[m_tmp];
 }
 //如果字符串的长度被3除余2 ,不足的位数补0,尾部补“=”
 if(m_len%3==2){

  m_tmp=m_s[m_len-2]/4;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[m_len-2]%4*16+m_s[m_len-1]/16;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[m_len-1]%16*4;
  m_64code+=m_64[m_tmp];
  m_64code+=''='';
 }
 //如果字符串的长度被3除余1 ,不足的位数补0,尾部补两个“=”
 if(m_len%3==1){
  m_tmp=m_s[m_len-1]/4;
  m_64code+=m_64[m_tmp];
  m_tmp=m_s[m_len-1]%4*16;
  m_64code+=m_64[m_tmp];
  m_64code+="==";
 }
 return m_64code;
}

结束语

本程序在Windows 2000环境下使用Borland C++ Builder 6.0编写及调试的,分别使用网易和新浪邮箱做实验,都可以顺利完成身份认证以及邮件发送功能。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号