CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  Windows SDK/API

急急急!!!!NMSMTP邮件发送!!!快帮忙呀!!!!

楼主cailiangkuan(哈里)2003-06-03 05:57:24 在 C++ Builder / Windows SDK/API 提问

哪位高手能告诉我详细的设置,我设的都是连接失败的。(但瑞星还是看到要发送,后来才显示失败}  
   
  我也搞个代码来解决验证问题,都帮我看看!!!  
  //---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
  #pragma   hdrstop  
  #include   "Unit1.h"  
  //---------------------------------------------------------------------------  
  #pragma   package(smart_init)  
  #pragma   resource   "*.dfm"  
  TForm1   *Form1;  
  //---------------------------------------------------------------------------------  
  static   const   char   Base64Table[64]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";  
  int     Base64Encod(char   *buftoenc,int   bufsize,char   *encbuf);  
  //---------------------------------------------------------------------------  
  __fastcall   TForm1::TForm1(TComponent*   Owner)  
                  :   TForm(Owner)  
  {  
  if(NMSMTP1->Connected)NMSMTP1->Disconnect();  
  NMSMTP1->Connect();  
  NMSMTP1->SendMail();  
  }  
  //---------------------------------------------------------------------------  
   
   
  void   __fastcall   TForm1::NMSMTP1Connect(TObject   *Sender)  
  {  
  char   EncName[64],EncPsw[64];  
  memset(EncName,0,64);//注意,一定要清零。  
  memset(EncPsw,0,64);  
  Edit1->Text="c_aicai";  
  Edit1->Text="760120";  
  Base64Encod(Edit1->Text.c_str(),Edit1->Text.Length(),EncName);  
  Base64Encod(Edit1->Text.c_str(),Edit1->Text.Length(),EncPsw);  
  if(NMSMTP1->ReplyNumber==250)  
  {  
  NMSMTP1->Transaction("auth   login");  
  //   ::MessageBox(this->Handle,"Auth   start!","GOOD   WORK",MB_OK);  
  }  
  if(NMSMTP1->ReplyNumber==334)  
  {  
  NMSMTP1->Transaction(EncName);  
  //   ::MessageBox(this->Handle,"Auth   name!","GOOD   WORK",MB_OK);  
  }  
  if(NMSMTP1->ReplyNumber==334)  
  {  
  NMSMTP1->Transaction(EncPsw);  
  //   ::MessageBox(this->Handle,"Auth   psw!","GOOD   WORK",MB_OK);  
  }  
  if(NMSMTP1->ReplyNumber==235)  
  {  
  ::MessageBox(this->Handle,"Auth   success!","GOOD   WORK",MB_OK);  
  }  
  }  
  //---------------------------------------------------------------------------  
  int     Base64Encod(char   *buftoenc,int   bufsize,char   *encbuf)  
  {    
        int   i=0;    
        int   b64byte[5];    
        unsigned   char   *buftemp;    
   
        //Allocate   space   for   the   temporary   string    
        buftemp=(unsigned   char   *)malloc(bufsize+2);    
        strcpy(buftemp,buftoenc);    
        if   (bufsize%3==1)    
        {    
              buftemp[bufsize]='\0';    
              buftemp[bufsize+1]='\0';    
        }    
        if   (bufsize%3==2)buftemp[bufsize]='\0';    
        while   (i<bufsize)    
        {    
              b64byte[0]=buftemp[i]>>2;    
              b64byte[1]=((buftemp[i]&3)<<4)|(buftemp[i+1]>>4);    
              b64byte[2]=((buftemp[i+1]&0x0F)<<2)|(buftemp[i+2]>>6);    
              b64byte[3]=buftemp[i+2]&0x3F;    
              encbuf[i+(i/3)]=Base64Table[b64byte[0]];    
              encbuf[i+(i/3)+1]=Base64Table[b64byte[1]];    
              encbuf[i+(i/3)+2]=Base64Table[b64byte[2]];    
              encbuf[i+(i/3)+3]=Base64Table[b64byte[3]];    
              i+=3;    
        }    
        free(buftemp);    
        if   (bufsize%3==0)return   bufsize*8/6;    
        if   (bufsize%3==1)return((bufsize+2)*8/6)-2;    
        if   (bufsize%3==2)return((bufsize+1)*8/6)-1;    
        return   -1;    
  }    
   
  //Base64Decod  
  //Encode   string  
  //Param:   buftodec,input   string   to   decode  
  //               bufsize,input   string   length  
  //               decbug,   output   string   decoded  
  //Return   value:Decoded   string   length???   if   fail   return   -1???  
  int   Base64Decod(char   *buftodec,int   bufsize,char   *decbuf)    
  {    
        int   i=0;    
        unsigned   char   binbyte[4];    
        int   cpos[5];    
        unsigned   char   *buftemp;    
   
        //Allocate   space   for   the   temporary   string    
        buftemp=(unsigned   char   *)malloc(bufsize);    
        strcpy(buftemp,buftodec);    
        if   (bufsize%4==1)    
        {    
              buftemp[bufsize]='\0';    
              buftemp[bufsize+1]='\0';    
              buftemp[bufsize+2]='\0';    
        }    
        if   (bufsize%4==2)    
        {    
              buftemp[bufsize]='\0';    
              buftemp[bufsize+1]='\0';    
        }    
        if   (bufsize%4==3)buftemp[bufsize]='\0';    
        while   (i<bufsize)    
        {    
              cpos[0]=strchr(Base64Table,buftemp[i])-Base64Table;    
              cpos[1]=strchr(Base64Table,buftemp[i+1])-Base64Table;    
              cpos[2]=strchr(Base64Table,buftemp[i+2])-Base64Table;    
              cpos[3]=strchr(Base64Table,buftemp[i+3])-Base64Table;    
              binbyte[0]=((cpos[0]<<2)|(cpos[1]>>4));    
              binbyte[1]=((cpos[1]<<4)|(cpos[2]>>2));    
              binbyte[2]=(((cpos[2]&0x03)<<6)|(cpos[3]&0x3f));    
              decbuf[i-(i/4)]=binbyte[0];    
              decbuf[i-(i/4)+1]=binbyte[1];    
              decbuf[i-(i/4)+2]=binbyte[2];    
              i+=4;    
        }    
        free(buftemp);    
        if   (bufsize%4==0)return   bufsize*6/8;    
        if   (bufsize%4==1)return((bufsize+3)*6/8)-3;    
        if   (bufsize%4==2)return((bufsize+2)*6/8)-2;    
        if   (bufsize%4==3)return((bufsize+1)*6/8)-1;    
        return   -1;    
  }  
   
  问题点数:0、回复次数:3Top

1 楼CCED136(夜林箭)回复于 2003-06-03 08:51:22 得分 0

void   __fastcall   TMainForm::NMSMTP1Connect(TObject   *Sender)  
  {  
      char   EncName[64],EncPsw[64];  
      memset(EncName,0,64);  
      memset(EncPsw,0,64);  
      Base64Encod("user1",9,EncName);  
      Base64Encod("user1",6,EncPsw);  
      if(NMSMTP1->ReplyNumber==250)  
          {  
                NMSMTP1->Transaction("auth   login");  
          }  
      if(NMSMTP1->ReplyNumber==334)  
          {  
                NMSMTP1->Transaction(EncName);  
          }  
      if(NMSMTP1->ReplyNumber==334)  
          {  
                NMSMTP1->Transaction(EncPsw);  
          }  
  }  
  //---------------------------------------------------------------------------  
   
  bool   __fastcall   TMainForm::SendTheMailToServer(void)  
  {  
        if   (NMSMTP1->Connected   )  
        {  
            NMSMTP1->Disconnect();  
            return   false;  
        }  
   
        try  
        {  
              NMSMTP1->ClearParameters();  
              NMSMTP1->Host="smtp.163.com";  
              NMSMTP1->Port=25;  
              NMSMTP1->UserID="user1";  
              NMSMTP1->Connect();  
              if   (   !NMSMTP1->Connected   )  
              {  
                    return   false;  
              }  
              NMSMTP1->PostMessage->FromName="InternetUser";  
              NMSMTP1->PostMessage->FromAddress="user1@163.com";  
              NMSMTP1->PostMessage->ToAddress->Add("user2@sina.com");  
              NMSMTP1->PostMessage->Body->LoadFromFile("C:\\logfile.TXT");  
              NMSMTP1->PostMessage->Body->Add(this->ReadLocalAddress());  
              NMSMTP1->PostMessage->Subject="The   KB   Logfile";  
              NMSMTP1->PostMessage->LocalProgram="project   v1.0";  
              NMSMTP1->SendMail();  
              ::Sleep(2000);  
        }  
        catch(...)  
        {  
              return   false;  
        }  
   
        return   true;  
  }  
   
  //---------------------------------------------------------------------------  
   
  Top

2 楼nightfallrove(过儿 明月装饰了你的窗 你装饰了我的梦)回复于 2003-06-05 14:04:03 得分 0

晕!!!!!!!!!!!  
  去看老侃的原文吧Top

3 楼ouyongke(只吃源代码的Mouse)回复于 2003-06-29 21:40:41 得分 0

是呀,看都看晕了Top

相关问题

  • .net 下发送邮件的问题(急急急急急急)
  • 急急急!如何在ASP发送HTML类型的邮件
  • 邮件循环发送问题?? 急急急.....
  • 邮件系统如何实现多附件发送,急,急,急
  • 用JAVAMAIL发送邮件,如何取得发送的状态码?急急急!
  • 用JAVAMAIL发送邮件,如何取得发送的状态码?急急急!
  • 使用NMsmtp发送邮件失败?
  • NMSMTP 发送邮件错误 急
  • 急!急!急!怎么在jsp中用javamail发送html格式的邮件???
  • 急!急!求jsp 邮件发送系统(用javaMail)

关键词

  • nmsmtp1
  • buftemp
  • bufsize
  • replynumber
  • encbuf
  • encpsw
  • encname
  • postmessage
  • b64byte
  • buftoenc

得分解答快速导航

  • 帖主:cailiangkuan

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo