【问题标题】:Delphi Indy 10 Smtp Error "Unable to authenticate at present"Delphi Indy 10 Smtp 错误“目前无法进行身份验证”
【发布时间】:2012-02-16 11:58:13
【问题描述】:

我正在使用这段代码从 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. 感谢您的回复。该服务器不是交换服务器。我的假设是,如果我可以从 Microsoft Office 2007 发送邮件,我应该能够对我的 delphi 代码执行相同的操作。我希望我只是错过了代码或组件属性中的某些内容。
  • 那么,在 Exchange 以外的其他电子邮件程序中尝试一下,找出您需要的身份验证设置,这可能会告诉您该怎么做。 TLS等

标签: delphi smtp indy10


【解决方案1】:

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

【讨论】:

  • 如果您想使用显式 TLS,请将 Port 设置为 587,或将其保留为 25(设置 UseTLS 属性将为您更新 Port,如果它包含其默认值值)。
  • 正确,注意服务器所有者给你的连接细节显然非常重要。如果服务器没有监听端口 465 或端口 587,那么尝试连接这些端口显然是没有意义的。
  • 我之所以提到它是因为在连接之前设置UseTLS 属性可能会或可能不会隐式更新Port 属性,具体取决于之前设置的端口属性。我见过人们确实注意到这一事实并最终连接到与他们预期不同的端口的情况。
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 2018-04-18
  • 2021-12-31
  • 2019-01-03
  • 2011-08-04
  • 2012-12-23
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多