procedure TForm1.NMSMTP1Connect(Sender: TObject);
begin
  StatusBar1.SimpleText := 'Now begin Authentication, plesae wait...';
  if nmsmtp1.ReplyNumber = 250 then
    nmsmtp1.Transaction('auth login'); //开始认证
  if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入用BASE64编码后的用户名
    nmsmtp1.Transaction('');// 用户名cszhz
  if nmsmtp1.ReplyNumber =334 then  // 返回值为334,让你输入用BASE64编码后的用户密码
    nmsmtp1.Transaction(''); //密码为???????
  if nmsmtp1.ReplyNumber =235 then
    StatusBar1.SimpleText := 'Authentication Success!'
  else
    StatusBar1.SimpleText := 'Authentication Failure!';
end;给你base64的编码函数
//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;