ďťż

Ładny brzuch

Chcę zrobić aplikację wysyłającą maila z załącznikami (korzystam z Indy9)
Na górze w type mam: procedure wyslijmail();
Potem tak:

procedure Tform1.wyslijmail();
begin

IdMessage1.Clear; //czyszczenie zawartości komponentu IdMessage
IdSMTP1.Host :='smtp.poczta.onet.pl'; //ustawienie adresu IP/nazwy serwera
IdSMTP1.Username := 'czesio@op.pl'; //ustawienie nazwy użytkownika
IdSMTP1.Password := 'hasloczesia'; //ustawienie hasła użytkownika
IdSMTP1.AuthenticationType := atLogin; //ustawienie trybu authentifikacji

if IdSMTP1.Connected then
begin

IdMessage1.From.Text := 'Od Czesia'; //dodanie informacji od kogo
IdMessage1.Subject := 'Siemanko'; //dodanie tematu
IdMessage1.Recipients.Add.Text :=zenekk1@op.pl; //dodanie adresu odbiorcy

//dodanie załącznika do wiadomości
TidAttachment.create(IdMessage1.MessageParts, ExtractFilePath(ParamStr(0)) + 'c:\egzamin.txt');

IdSMTP1.Send(IdMessage1); //wysyłanie wiadomosci
showmessage('mail wysłany');
end;

-----------------------------

Pod buttonem1 mam:

begin
wyslijmail();
end;

-----------------------------
czemu mi nic nie wysyła na zenekk1@op.pl ??
Użytkownik qwert23 edytował ten post 31 styczeń 2006, 04:26


procedure Tform1.wyslijmail(); begin  IdMessage1.Clear;                       //czyszczenie zawartości komponentu IdMessage  IdSMTP1.Host :='smtp.poczta.onet.pl';              //ustawienie adresu IP/nazwy serwera  IdSMTP1.Username := 'czesio@op.pl';             //ustawienie nazwy użytkownika  IdSMTP1.Password := 'hasloczesia';               //ustawienie hasła użytkownika  IdSMTP1.AuthenticationType := atLogin;        //ustawienie trybu authentifikacji TRY        IdSMTP1.Connected FINALLY  begin     IdMessage1.From.Text := 'Od Czesia';    //dodanie informacji od kogo     IdMessage1.Subject := 'Siemanko';            //dodanie tematu     IdMessage1.Recipients.Add.Text :=zenekk1@op.pl;  //dodanie adresu odbiorcy     //dodanie załącznika do wiadomości     TidAttachment.create(IdMessage1.MessageParts, ExtractFilePath(ParamStr(0)) + 'c:\egzamin.txt'); TRY      IdSMTP1.Send(IdMessage1)                    //wysyłanie wiadomosci FINALLY      showmessage('mail wysłany');   end;

Połączenie z serwerem i wysyłanie maila ująłbym w bloki Try ... Finally
Użytkownik Private edytował ten post 31 styczeń 2006, 07:11
zrobiłem tak jak napisałeś (try i finally) i po naciśnieciu buttona1 (który wysyła) pojawia się message że wysłano maila ale na skrzynce zenekk1@op.pl nie ma wiadomości z załącznikiem :(

Bo masz błąd: TidAttachment.create(IdMessage1.MessageParts, ExtractFilePath(ParamStr(0)) + 'c:\egzamin.txt');

skoro ExtractFilePath(ParamStr(0)) masz ścieżkę do pliku, po co jeszcze dodajesz "c:\" ??



THX Cyrkiel - a mogłbyś napisać jak ma to wyglądać gdy chcemy podać CAŁĄ ścieżkę do pliku (w przyszłości to mi się przyda)

TidAttachment.create(IdMessage1.MessageParts, ExtractFilePath(ParamStr(0)) + 'egzamin.txt');
Chyba tak.

ale mi chodzi o to jak sformuować komendę żeby była całą ścieżka do załącznika, np:
d:\moje\egzamin.txt

a nie tylko "egzamin.txt"
--------------------------------------------------------
PS. Zobaczcie, nie wiem czy mam rację ale nie widze tu komendy która łączy IdSMTP1 - na początku są ustawienia a potem od razu "IdSMTP1.Connected". Mam rację?

procedure Tform1.wyslijmail(); begin IdMessage1.Clear;                       //czyszczenie zawartości komponentu IdMessage IdSMTP1.Host :='smtp.poczta.onet.pl';              //ustawienie adresu IP/nazwy serwera IdSMTP1.Username := 'czesio@op.pl';             //ustawienie nazwy użytkownika IdSMTP1.Password := 'hasloczesia';               //ustawienie hasła użytkownika IdSMTP1.AuthenticationType := atLogin;        //ustawienie trybu authentifikacji TRY       IdSMTP1.Connected FINALLY
Użytkownik qwert23 edytował ten post 31 styczeń 2006, 13:16
To, że łączenie jest po ustawieniach, jest dobrze, ale powinno być "idsmtp.Connect;" :)

Nie no już nic nie rozumiem, totalna klapa - robię wszystko tak jak jest na 4programmers:
- w type mam procedure wyslijmail();
------------------------------------------
Teraz głowna procedura wysyłania:

procedure Tform1.wyslijmail(); begin IdMessage1.Clear; //czyszczenie zawartości komponentu IdMessage IdSMTP1.Host :=Edit4.Text; //nazwa servera SMTP (smtp.poczta.onet.pl) IdSMTP1.Username := Edit5.Text; //ustawienie nazwy użytkownika (czesio12345@op.pl) IdSMTP1.Password := Edit6.Text; //ustawienie hasła użytkownika (hasloczesia) IdSMTP1.AuthenticationType := atLogin; //ustawienie trybu authentifikacji if not IdSMTP1.Connected then //nawiązanie połączenia w przypadku jego braku begin try IdSMTP1.Connect(-1); //nawiązywanie połączenia showmessage('Połączony ...'); except on exception do begin showmessage('BŁĄD !!! Wysyłanie poczty !!! Polączenie z serwerem ' + IdSMTP1.Host + ' niepowiodło się !!!'); end; end; end; //jeżeli połaczenie jest zestawione - wysyłanie wiadomości if IdSMTP1.Connected then begin //dodanie informacji od kogo IdMessage1.From.Text := 'Od czesia12345'; //dodanie tematu IdMessage1.Subject :='przesyłka'; //dodanie adresu odbiorcy IdMessage1.Recipients.Add.Text :='qwert23@op.pl'; // czyli mój mail //dodanie załącznika do wiadomości TidAttachment.create(IdMessage1.MessageParts, ExtractFilePath(ParamStr(0)) + 'aaabbb.txt'); // plik aaabbb.txt znajduje się na pulpicie, z pulpitu też odpalam program showmessage('Wysyłanie wiadomości ...'); Try //wysyłanie wiadomości IdSMTP1.Send(IdMessage1); showmessage('Wiadomość wysłana.'); //czyszczenie komponentu IdMessage IdMessage1.Clear; except on exception do begin showmessage('Błąd przy wysyłaniu wiadomości !!!'); //czyszczenie komponentu IdMessage IdMessage1.Clear; end; end; end; end;
--------------------------------------------------
Pod buttonem1 mam:
procedure TForm1.Button1Click(Sender: TObject); begin wyslijmail(); end;
----------------------------------------------

Wszystko wygląda ok lecz po uruchomieniu programu i naciśnięciu buttona wyświetla że "połączony' a potem "Błąd przy wysyłaniu wiadomości" zaś za drugim razem gdy naciskam button1 to jest "wiadomość wysłana" i tak już zawsze.
Lecz nie dochodzi żaden mail na qwert23@op.pl (czyli mój) DDLLAACCZZEEGGOO???? Bo już powoli wariuję...........

procedure TForm1.Button1Click(Sender: TObject); var msg:TIdMessage; att:TIdAttachMent; begin IdSMTP1.Host:='smtp.wp.pl'; IdSMTP1.Username:='xx'; IdSMTP1.Password:='xx'; IdSMTP1.AuthenticationType:=atLogin; IdSMTP1.Connect; if not IdSMTP1.Connected then MessageBox(Handle,'Nie można połączyć się z serwerem','Błąd',MB_OK+MB_IConerror) else begin msg:=TIdMessage.Create(nil); msg.Body.Text:='costam'; msg.Subject:='tytul'; msg.Recipients.Add.Address:='xxgmail.com'; msg.From.Name:='xx@wp.pl'; msg.From.Address:='xx@wp.pl'; att:=TIdAttachment.Create(msg.MessageParts,'c:\plik.txt'); IdSMTP1.Send(msg); att.Free; msg.Free; end; end;W uses pamiętaj, żebyś miał "IdMessage", bo domyślnie się nie dodaje...
Użytkownik Cyrkiel edytował ten post 31 styczeń 2006, 15:03
THX Cyrkiel, wreszcie ok !!!!!!!!!!!!!!!!!!!! :):):):):):):):)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •