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