Ĺ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
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 !!!!!!!!!!!!!!!!!!!! :):):):):):):):)