IdSMTP po rozłączeniu nie wysyła kolejnych e-maili

0

Dlaczego ponizszy kod dziala tylko raz. Za drugim kliknieciem podczas wysylania wiadomosci ukazuje sie komunikat: Sender address rejected: Serwer poczta.o2.pl WYMAGA UWIERZYTELNIENIA. Zobacz ... - plik pomocy http na o2.pl o konfiguracji programu pocztowego.

Na logike jesli bylaby zle napisana ponizsza procedura - konfiguracji wysylania - to program nie powinien wysylac zadnego maila. A nie wysyla tylko za drugim kliknieciem - wyślij.

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
if not IdSMTP1.Connected then
begin
 IdSMTP1.port:= 587;                       // Port SMTP  - ustawialny
 idsmtp1.AuthType:=atDefault;
 IdSMTP1.Username:= 'login';       // Login - ustawialny
 IdSMTP1.Host:= 'poczta.o2.pl';            // Host SMTP   - ustawialny
 IdSMTP1.Password:= 'haslo';            // Hasło - ustawialny
 idsmtp1.MailAgent:='nazwa aplikacji';     // Nazwa aplikacji - ustawialny
 idsmtp1.pipeline:=true;
 idsmtp1.UseEhlo:=true;

      if IdSMTP1.Port = 465 then
         IdSMTP1.UseTLS := utUseImplicitTLS;
       if IdSMTP1.Port = 587 then
          IdSMTP1.UseTLS := utUseExplicitTLS;

 IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
 IdSSLIOHandlerSocketOpenSSL1.Port:=  IdSMTP1.port;
 IdSSLIOHandlerSocketOpenSSL1.DefaultPort:=IdSMTP1.port;
 IdSSLIOHandlerSocketOpenSSL1.Destination :=
        IdSMTP1.Host + ':' + IntToStr(IdSMTP1.Port);
 IdSSLIOHandlerSocketOpenSSL1.Host:=IdSMTP1.Host;
 IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
 IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode:=sslmClient;
 IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [];

 //podanie parametrów do message...
   IdMessage1.From.Address:= 'login';            //nadawca Twój mail
   IdMessage1.From.Domain:='o2.pl';
   IdMessage1.From.Text:= 'nazwa <[email protected]>';        //imię nadawcy  'OD'
   IdMessage1.Recipients.EMailAddresses:= '[email protected]'; //odbiorca  'DO'
   IdMessage1.Subject:=Edit1.Text;      // Temat
   Edit1.Text:=inttostr(strtoint(Edit1.Text)+1);
   IdMessage1.Sender.Address:='login';
   IdMessage1.Sender.Domain:='o2.pl';

 idSMTP1.Connect;
end;

 try
  try     //send the message
      idSMTP1.send(idmessage1);
      label1.Caption:= 'mail został wysłany'+ IdMessage1.Subject;
      except on E: EIdSMTPReplyError do
       begin  //if an exception occurs…
        //ShowMessage(E.Message);
        label1.Caption:=E.Message; //…then show the message
       end;
  end;
     finally //disconnect from server if close program
        if IdSMTP1.Connected then
           IdSMTP1.Disconnect;
 end;
end;

Gdy usune IdSMTP1.Disconnect wysyla ponownie maile po wywolaniu ww procedury. Czegos brakuje? Szukam, probuje dojsc o co chodzi, gdzie jest blad - i juz nie mam pomyslu co moze byc nie tak. Prosze o jakiekolwiek wskazowki.

dodanie znacznika <code class="delphi"> - furious programming

0

Wszystko wynika z faktu że jesteś NIECIERPLIWY i nie dajesz aplikacji czasu na wysłanie e-maila. Jeżeli poczekasz na wysłanie jest wszystko OK.

0

Tylko pierszy email dociera na docelowa skrzynke. Drugi i nastepne juz nie.

0

Ponizej log co sie dzieje

Stat Connected.
Recv 2014-06-20 21:13:28: 220 poczta.o2.pl ESMTP Wita<EOL>
Sent 2014-06-20 21:13:28: EHLO nazwa<EOL>
Recv 2014-06-20 21:13:28: 250-poczta.o2.pl<EOL>250-SIZE 150000000<EOL>250-AUTH LOGIN PLAIN<EOL>250-AUTH=LOGIN PLAIN<EOL>250-STARTTLS<EOL>250 8BITMIME<EOL>
Sent 2014-06-20 21:13:28: STARTTLS<EOL>
Recv 2014-06-20 21:13:29: 220 Ready to start TLS<EOL>
Sent 2014-06-20 21:13:29: EHLO nazwa<EOL>
Recv 2014-06-20 21:13:31: 250-poczta.o2.pl<EOL>250-SIZE 150000000<EOL>250-AUTH LOGIN PLAIN<EOL>250-AUTH=LOGIN PLAIN<EOL>250-STARTTLS<EOL>250 8BITMIME<EOL>
Sent 2014-06-20 21:13:31: RSET<EOL>
Recv 2014-06-20 21:13:32: 250 Ok<EOL>
Sent 2014-06-20 21:13:32: MAIL FROM:<[email protected]><EOL>
Recv 2014-06-20 21:13:32: 554 5.7.1 Sender address rejected: SERWER poczta.o2.pl WYMAGA UWIERZYTELNIENIA. Zobacz http://pomoc.o2.pl/poczta/autoryzacja/ i skonfiguruj poprawnie program pocztowy.<EOL>
Sent 2014-06-20 21:13:32: QUIT<EOL>
Recv 2014-06-20 21:13:32: 250 Ok<EOL>
Stat Disconnected.
 
0

Po zainstalowaniu wersji Indy 10_5155 problem znikl. Wczesniej zainstalowana byla wersja 10.0.52 ktora w Idsmtpbase.pas posiada bugi zwiazane z wysylka komendy rset.

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