他可能不在吧,不过你问e-mail的问题,他应该比较在行

解决方案 »

  1.   

    搞笑,我是菜鸟一只。首先建议你看一下smtp协议,协议都不了解,怎么写程序???
      

  2.   

    如果你仔细看协议了,自己可以解决,下面给你我的方法。上次给你说得trasaction是对nsmtp的,但是协议是一样的,只是idsmtp封装的更好而已。
    以下是我的实现,希望对你有帮助。
    procedure TForm1.Button2Click(Sender: TObject);
    var
      rst : smallint;
    begin  SMTP.UserID := 'cszhz';
      SMTP.Password := '你的密码';
      SMTP.Host := 'smtp.263.net';
      SMTP.Port := 25;
      SMTP.Connect;
      try
        rst := smtp.SendCmd('auth login',[]);
        if rst = 334 then
        begin
          rst := smtp.SendCmd('用base64加密的用户名',[]);
          if rst = 334 then
          begin
            rst := smtp.SendCmd('用base64加密的密码', []);
            if rst = 235 then
              showmessage('授权成功');
          end;
        end;
        rst := smtp.SendCmd('MAIL FROM:<[email protected]>',[]);
        if rst = 250 then
        begin
          rst := smtp.SendCmd('RCPT TO:<[email protected]>',[]);
          if rst = 250 then
            showmessage('存在')
          else
            showmessage('不存在');
         end;
      finally
        SMTP.Disconnect;
      end;
    end;
    //BaseTable为BASE64码表
          const
          BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';      var
            function DecodeBase64(Source:string):string; //解码函数
            function FindInTable(CSource:char):integer;  //
            function EncodeBase64(Source:string):string; //编码函数
          function FindInTable(CSource:char):integer;
          begin
            result:=Pos(string(CSource),BaseTable)-1;
          end;
          ////
          function DecodeBase64(Source:string):string;
          var
            SrcLen,Times,i:integer;
            x1,x2,x3,x4,xt:byte;
          begin
            result:='';
            SrcLen:=Length(Source);
            Times:=SrcLen div 4;
            for i:=0 to Times-1 do
            begin
              x1:=FindInTable(Source[1+i*4]);
              x2:=FindInTable(Source[2+i*4]);
              x3:=FindInTable(Source[3+i*4]);
              x4:=FindInTable(Source[4+i*4]);
              x1:=x1 shl 2;
              xt:=x2 shr 4;
              x1:=x1 or xt;
              x2:=x2 shl 4;
              result:=result+chr(x1);
              if x3= 64 then break;
              xt:=x3 shr 2;
              x2:=x2 or xt;
              x3:=x3 shl 6;
              result:=result+chr(x2);
              if x4=64 then break;
              x3:=x3 or x4;
              result:=result+chr(x3);
            end;
          end;
          /////
          function EncodeBase64(Source:string):string;
          var
            Times,LenSrc,i:integer;
            x1,x2,x3,x4:char;
            xt:byte;
          begin
            result:='';
            LenSrc:=length(Source);
            if LenSrc mod 3 =0 then Times:=LenSrc div 3
            else Times:=LenSrc div 3 + 1;
            for i:=0 to times-1 do
            begin
              if LenSrc >= (3+i*3) then
              begin
                x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
                xt:=(ord(Source[1+i*3]) shl 4) and 48;
                xt:=xt or (ord(Source[2+i*3]) shr 4);
                x2:=BaseTable[xt+1];
                xt:=(Ord(Source[2+i*3]) shl 2) and 60;
                xt:=xt or (ord(Source[3+i*3]) shr 6);
                x3:=BaseTable[xt+1];
                xt:=(ord(Source[3+i*3]) and 63);
                x4:=BaseTable[xt+1];
              end
              else if LenSrc>=(2+i*3) then
              begin
                x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
                xt:=(ord(Source[1+i*3]) shl 4) and 48;
                xt:=xt or (ord(Source[2+i*3]) shr 4);
                x2:=BaseTable[xt+1];
                xt:=(ord(Source[2+i*3]) shl 2) and 60;
                x3:=BaseTable[xt+1];
                x4:='=';
              end else
              begin
                x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];
                xt:=(ord(Source[1+i*3]) shl 4) and 48;
                x2:=BaseTable[xt+1];
                x3:='=';
                x4:='=';
              end;
              result:=result+x1+x2+x3+x4;
            end;
          end;