你没有做身份验证,需要用户名和密码
你搜索以前的帖子有很多,
简单的吗。。
如果是D6就用IDNY上哪个什么。。来着,好象叫idsmtp?

解决方案 »

  1.   

    以下为smtp验证的函数,看着改吧,这个是测试通过的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;