Delphi Indy 10 Smtp 错误 "无法进行身份验证"

3
我正在使用这段代码从Delphi Indy发送测试邮件。我有一个TidSMTP,TIdMessage和IdSSLIOHandlerSocketOpenSSL;在下面的代码中,如果我将其设置为使用带SSL的gmail,则正常工作,但是只要我用我的cPanel邮件服务器详细信息替换服务器详细信息,它就无法工作,报错“无法验证身份”。我使用与Outlook 2007中设置我的帐户相同的详细信息。以下是代码:
IdSSLIOHandlerSocketOpenSSL详细信息。
method := sslvsslv3
mode := sslmUnassigned

//rest default values

procedure Tfrmnotification.btnSendClick(Sender: TObject);
var
  IdMsg : TIdMessage;
begin

begin
  IdMsg := TIdMessage.Create(nil);
  try
    with TIdSMTP.Create(nil) do
    try
     // UserName := 'something@gmail.com';
     // Password := 'pass';
     // Host := 'smtp.gmail.com';
     // IOHandler := IdSSLIOHandlerSocketOpenSSL;
     // Port := 587;
      UserName := 'something@sasra.co.za';
      Password := 'password';
      Host := 'outgoing server detials';// same as outlooks
      IOHandler := IdSSLIOHandlerSocketOpenSSL;
      Port := 465;// this is correct port
      UseTLS:=  utUseExplicitTLS;


      IdMsg.Body.Add('test');
      IdMsg.Recipients.emailAddresses := 'something@gmail.com';
      IdMsg.Subject := 'test';
      IdMsg.From.Address := 'something@sasra.co.za';
      IdMsg.From.Name := 'john';


      Connect;
      Send(IdMsg);
      Disconnect;
    finally
      Free;
    end;
  finally
    IdMsg.free;
  end;
  showmessage('done');
end;

任何帮助都将不胜感激。


那么你正在通信的服务器是一个交换服务器?所以问题是建立到Exchange的SSL连接?如果您尝试使用Mozilla Thunderbird电子邮件客户端,它是否有效?如果它在那里不起作用,为什么要尝试编写可能未配置为在服务器端正常工作的代码呢? - Warren P
嘿,Warren P. 谢谢你的回复。服务器不是交换服务器。我的假设是,如果我可以从 Microsoft Office 2007 发送邮件,那么我应该能够用我的 Delphi 代码做同样的事情。我希望只是在我的代码或组件属性中漏掉了什么。 - Overklog
那么,尝试在Exchange之外的其他电子邮件程序中使用它,并找出您需要的身份验证设置,这可能会告诉您该怎么做。TLS等。 - Warren P
1个回答

3

端口465用于SMTP的隐式SSL连接。您将UseTLS设置为utUseExplicitTLS。正确的值应该是(很可能)utUseImplicitTLS。


如果您想使用显式TLS,请将“端口”设置为587,或将其保留为25(如果“UseTLS”属性包含其默认值,则会更新“端口”)。 - Remy Lebeau
正确的,显然非常重要的是要注意服务器所有者给出的连接细节。如果服务器没有在端口465或端口587上监听,那么尝试在这些端口上连接显然是没有意义的。 - Henrick Hellström
我提到这个原因是因为设置 UseTLS 属性可能会在连接之前隐式更新 Port 属性,具体取决于先前设置的 Port 属性。我曾经见过一些人注意到这个事实并最终连接到了与他们预期不同的端口。 - Remy Lebeau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接