uses Psock, NMsmtp;function testSmtp(user, psd, host: string; port: integer): boolean;
var nmsmtp1: TNMSMTP;
    MailTo,MailBody:TStringList;
    Tempstr1,Tempstr2 : String;
    TrueStr1,TrueStr2 : String;
    strStatus: string;
    AuthSucc: boolean;
begin
  AuthSucc := false;
  nmsmtp1 := TNMSMTP.Create(nil);
  Nmsmtp1.Host := host;
  nmsmtp1.Port := port;
  nmsmtp1.UserID := user;//发信人的用户名,必须是真实的
  nmsmtp1.ReportLevel :=1;
  Nmsmtp1.TimeOut :=10000;
  nmsmtp1.Connect ; ///连接  strStatus:=nmsmtp1.Status;
  if nmsmtp1.ReplyNumber = 250 then begin
    strStatus:=nmsmtp1.Transaction('auth login'); //开始认证  
  end;
  if nmsmtp1.ReplyNumber =334 then
  begin
  strStatus:=nmsmtp1.Transaction(EncodeBase64(user));// 用户名aaaaa
  strStatus:=nmsmtp1.Transaction(EncodeBase64(psd)); //密码为123456
  end;  if nmsmtp1.ReplyNumber =235 then
  begin
    strStatus:='successful';
    AuthSucc:=true;
  end;  result := AuthSucc; ////验证成功
  nmsmtp1.Disconnect;
  nmsmtp1.Free;
end;测试通过,反回true为验证通过

解决方案 »

  1.   

    可能不是程序的问题啦
    比如smtp.163.net就只能向163.net的用户转发电子邮件
    我试过的
      

  2.   

    都发不了,如:163;public.tpt.tj.cn等
    每当NMSMTP1.SendMail时就发生错误。
      

  3.   

    我用FoxMail现在很多邮箱也不能接受邮件啦!
      

  4.   

    用delphi6来实现smtp认证的问题,它已经解决了这个问题!
      

  5.   

    我也碰到过这个问题,后来用D6中的Indy中的控件解决了.
    你可以下载Indy控件装在你的D5上.
      

  6.   

    可以用delphi6中的indy中的控件旧可了!!!!
    也可以参考以前的帖子!!!!
      

  7.   

    我也遇到这类问题,去年就是这样写的回邮系统,一点问题也没有,认证通过,发送邮件。现在要写一套邮件接受发送程序,就出了这些报错,我是完成strStatus:=nmsmtp1.Transaction('auth login')后nmsmtp1.ReplyNumber 返回503,而不是334。无法进行密码认证。不知道是公司防火墙原因,还是邮件服务器原因,要不程序需要升级了?