我试图使用Gmail帐户使用这些设置发送电子邮件(Delphi 7中,印第10):

TIdSmtp:

Port = 587;
UseTLS := utUseExplicitTLS;

TIdSSLIOHandlerSocketOpenSSL:

SSLOptions.Method := sslvTLSv1;

一切都显得集确定。我得到这个响应:

Resolving hostname smtp.gmail.com.
Connecting to 74.125.77.109.
SSL status: "before/connect initialization"
SSL status: "before/connect initialization"
SSL status: "SSLv3 write client hello A"
SSL status: "SSLv3 read server hello A"
SSL status: "SSLv3 read server certificate A"
SSL status: "SSLv3 read server done A"
SSL status: "SSLv3 write client key exchange A"
SSL status: "SSLv3 write change cipher spec A"
SSL status: "SSLv3 write finished A"
SSL status: "SSLv3 flush data"
SSL status: "SSLv3 read finished A"
SSL status: "SSL negotiation finished successfully"
SSL status: "SSL negotiation finished successfully"
Cipher: name = RC4-MD5; description = RC4-MD5                 SSLv3 Kx=RSA      Au=RSA  Enc=RC4(128)  Mac=MD5 
; bits = 128; version = TLSv1/SSLv3;

和然后它挂起并没有完成。电子邮件不会被发送。可以采取什么问题?

有帮助吗?

解决方案 2

问题是简单的。我没有足够的耐心和应用没有挂,有长超时。超时是的错误的设置的结果。

其他提示

是的,我见过很多与indy10和TLS(通常GMAIL)的问题。

首先确保您有最新的SSL库从这里

我已经看到间歇档位和错误已在印地(即非稳定释放)的前沿版本得到解决。看到 http://www.indyproject.org/sockets/download/svn.DE的.aspx

为gmail,我一般使用implicityTLS上端口465 ..

  idSmtp := TIdSMTP.Create(nil);
  try
    idSmtp.IOHandler := nil;
    idSmtp.ManagedIOHandler := true;

    // try to use SSL
    try
      TIdSSLContext.Create.Free;
      idSmtp.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idSmtp);
      if (smtpSettings.port = 465) then
        idSmtp.UseTLS := utUseImplicitTLS
      else
        idSmtp.UseTLS := utUseExplicitTLS;
    except
      idSmtp.IOHandler.Free;
      idSmtp.IOHandler := nil;
    end;

    if (idSmtp.IOHandler = nil) then
    begin
      idSmtp.IOHandler := TIdIOHandler.MakeDefaultIOHandler(idSmtp);
      idSmtp.UseTLS := utNoTLSSupport;
    end;

    // send message, etc

  finally
    idSmtp.Free;
  end;

首先,你有没有验证码正在与其他电子邮件服务器?

前些时候有人提到它们具有某些服务器接受与印地TIdHTTP部件的http请求的问题。原因是他们有印地包括作为用户代理的一部分:

      Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';

当它们除去的印库它的工作。显然已经出现了与印地创造了一些恶性网络服务,所以有些网站会拒绝从它创建的应用程序的连接。

我不知道,如果你正在使用的组件有任何类型的用户代理财产。但如果这样做,空出印任何引用。

在测试印,你应该确保“停止对德尔福例外”被选中(工具,调试选项,语言例外)。

一些例程,特别idSMTP.Send,“吃”(或隐藏)导致的异常挂机。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top