Инди 10 - IdSMTP.Send () зависает при отправке сообщений от учетной записи Gmail

Я пытаюсь послать электронное письмо с помощью учетной записи 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;

И затем это зависает и не заканчивается. Электронное письмо не послано. Какова может быть проблема?

6
задан LukLed 27 January 2010 в 08:51
поделиться

3 ответа

Проблема была проста. Я был недостаточно терпелив и приложение не зависало, был длительный тайм-аут. Тайм-аут был результатом неправильных настроек.

3
ответ дан 10 December 2019 в 02:47
поделиться

Да, я видел много вопросов с Indy10 и TLS (как правило, Gmail).

Сначала убедитесь, что у вас есть последние библиотеки SSL отсюда

, я видел прерывистые киоски и ошибки, которые были разрешены в кровотеченной режущей версии INDY (т. Е. См. http://www.indyproject.org/sockets/download/svn.de.aspx

для Gmail, я вообще использую imqueictlstls на порту 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;
4
ответ дан 10 December 2019 в 02:47
поделиться

во-первых, вы проверили код работы с другими серверами электронной почты?

Некоторые назад кто-то упомянул, что они были Имея проблемы с определенными серверами, принимающими HTTP-запросы с компонентом Indy TIDHTTP. Причина в том, что у них были индина, включенные в качестве части пользовательского обеспечения:

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

, когда они удалили Indy Biblic . Очевидно, что были некоторые злокачественные веб-сервисы, созданные с Indy, поэтому некоторые сайты будут отказвляться от приложений, созданных с ним.

Я не уверен, что компонент, который вы используете, имеет какое-либо свойство UserAgent. Но если это делает, не отучитывайте любые ссылки на Indy.

1
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: