wysyłanie wiadomości e-mail, INDY - błąd.

0

Witam, jestem nowy na forum i od niedawna uczę się delphi (znam podstawy C++ oraz C#)
Próbuje już od 3 dni napisać prostą funkcję wysyłającą e-mail opierając się o komponenty INDY. Czytałem już wiele tematów i poradników i jak na razie mam to:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  //czyszczenie zawartości komponentu IdMessage
  IdMessage1.Clear;
  //ustawienie adresu IP/nazwy serwera
  IdSMTP1.Host := 'smtp.gmail.com';
  IdSMTP1.Port := 587;
  //ustawienie nazwy użytkownika
  IdSMTP1.Username := '[email protected]';
    //ustawienie hasła użytkownika
  IdSMTP1.Password := '********';
  //ustawienie trybu authentifikacji
  IdSMTP1.AuthenticationType := atLogin;

  if not IdSMTP1.Connected then
  begin
    try
      StatusBar1.SimpleText := 'Zestawianie połączenia z serwerem ...';
      //nawiązywanie połączenia
      IdSMTP1.Connect(-1);
      StatusBar1.SimpleText := 'Połączony ...';
      showmessage('polaczony');
    except
      on exception do
      begin
        StatusBar1.SimpleText := 'BŁĄD !!! Wysyłanie poczty !!! Polączenie z serwerem '
          + IdSMTP1.Host + ' niepowiodło się !!!';
      end;
    end;
  end;
  if IdSMTP1.Connected then
  begin
    //dodanie informacji od kogo
    IdMessage1.From.Text := '[email protected]';
    //dodanie tematu
    IdMessage1.Subject := 'temat';
    //dodanie adresu odbiorcy
    IdMessage1.Body.Append('tresc');
    IdMessage1.Recipients.EMailAddresses := '[email protected]';
    StatusBar1.SimpleText := 'Wysyłanie wiadomości ...';
    try
      //wysyłanie wiadomości
      IdSMTP1.Send(IdMessage1);
      StatusBar1.SimpleText := 'Wiadomość wysłana.';
      //czyszczenie komponentu IdMessage
      IdMessage1.Clear;
    except
      on exception do
      begin
        showmessage('Błąd przy wysyłaniu wiadomości !!!');
        StatusBar1.SimpleText := 'Błąd przy wysyłaniu wiadomości !!!';
        //czyszczenie komponentu IdMessage
        IdMessage1.Clear;
      end;
    end;
  end;
end;

end.

Program dochodzi mi do momentu wysyłania wiadomości, wywala błąd wysyłania. Prosił bym o info czego mi brakuje albo co robię źle.

0

Śmiem wątpić czy to błąd wysyłania a nie błąd połączenia . Do połączenia z Gmail musisz używać szyfrowanego połączenia TLS potrzebne są też biblioteki ssleay32.dll i libeay32.dll dokładnie nie napiszę co i jak, bo z tego co widzę używasz Indy 9 a ja 10 tam jest duża różnica (praktycznie 10 z 9 nie jest kompatybilne wstecz) tak że poszukaj na temat szyfrowanych połączeń SMTP w Indy (być może nawet w demach do Indy coś jest).

EDIT//Jednak to być błąd wysyłania na tym porcie (587) można się połączyć bez TLS ale do samego wysłania już jest potrzebny TLS komunikat masz coś takiego "Must issue a STARTTLS command first"?

0

JAKI BŁĄD???

0

Dodatkowo na tej stronie znalazłem informację o innym porcie niż u ciebie:
http://email.about.com/od/accessinggmail/f/Gmail_SMTP_Settings.htm

0

błąd jest przy wysyłaniu, z gmailem prawdopodobnie łączy. Nie wiem jak sprawdzić dokładną nazwę problemu. Ale zatrzymuje go na wysyłaniu. Biblioteki mam, trzeba je jakoś zadeklarować w programie ?

0
Spart napisał(a):

błąd jest przy wysyłaniu, z gmailem prawdopodobnie łączy. Nie wiem jak sprawdzić dokładną nazwę problemu. Ale zatrzymuje go na wysyłaniu. Biblioteki mam, trzeba je jakoś zadeklarować w programie ?

Ten komunikat "Błąd przy wysyłaniu wiadomości !!!" zmień na kod poniżej i napisz jaki błąd dostajesz:

except
  on E: Exception do
    ShowMessage(E.Message);
end;

Bibliotek nie trzeba deklarować tylko muszą być w folderze z programem, dodaj komponent IdSSLIOHandlerSocketOpenSSL i trzeba ustawić (przynajmniej w Indy 10 mam nadzieję że w Indy 9 są podobne właściwości):
*IdSMTP->IOHandler na IdSSLIOHandlerSocketOpenSSL
*IdSSLIOHandlerSocketOpenSSL ->SSLOprions->Method na sslvTLSv1

0

Sprawdzałeś z innymi kontami pocztowymi? Np.: z o2.pl ładnie współpracuje.

0

błąd wywala taki: 5.7.0 Must issue a STARTTLS command first. k7sm3112041enn.8 - gsmtp

a po tych ustawieniach:
IdSMTP->IOHandler na IdSSLIOHandlerSocketOpenSSL
IdSSLIOHandlerSocketOpenSSL ->SSLOprions->Method na sslvTLSv1

w ogóle nie łączy już gmailem.
Próbowałem jeszcze z wp.pl ale gmail działa ok, tylko coś nie tam jest. Może ktoś wyjaśnić ten błąd ?

0

Wiem, że to nie jest rozwiązanie. Ale jeżeli nie uporasz się z Indy, to mogę Ciebie zapewnić, że wysyłanie e-maili poprzez konto na gmail.com na pewno działa przy wykorzystaniu pakietu Synapse. Ponieważ tutaj z Indy skutecznie potrafi pomóc chyba tylko @kAzek :/ A i przed chwilą sprawdziłem mój program, który korzysta z Synapse i e-mail wysłany z konta na gmail.com do konta na o2.pl - dotarł bez problemów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1