Sieć » Poczta

Jak wysłać e-mail poprzez komponenty Indy lub FastNet

  • 17 komentarzy
  • 2801 odsłon
  • Oceń ten tekst jako pierwszy
Zaraz mie szlag trafi jak sie ktos jescze o to zapyta:
dajemy na forme TIdMessage (MessageSend) i TIdSMTP (SMTP)

 MessageSend.Body.Append('tresc maila'); 
 MessageSend.From.Name := 'imie od kogo';
 MessageSend.From.Address := 'adres od kogo';
 MessageSend.Recipients.EMailAddresses := 'Odbiorca';
 MessageSend.Subject := 'temat';
 
 { UserName bądź UserId - to jest zeleżne od wersji Indy. ja pisałem na Indy 8 }
 SMTP.UserName := 'nazwa użytkownika serwera SMTP';
 SMTP.Password :=  'hasło';
 SMTP.Host :=  'adres serwera SMTP';
 SMTP.AuthenticationType:=atLogin; // autoryzacja SMTP
 SMTP.Connect; 
 try
  SMTP.Send(MessageSend); //wyślij
 finally
  SMTP.Disconnect; 
 end; 


Załączniki, jakby komuś nie chciało czytać się komentarzy poniżej:
TIdAttachment.Create(MessageSend.MessageParts, OpenDialog1.FileName);

Natomiast, jeżeli mamy dostęp do komponentów FastNet (których już nawiasem mówiąc nie ma w nowszych Delphi) to możemy użyć takiego kodu:

NMSMTP1 to komponent TNMSMTP.

begin 
  NMSMTP1.Host := 'smtp.MojaSkrzynka.pl'; // serwer SMTP
  NMSMTP1.Port := 25; // port SMTP
  NMSMTP1.UserID := 'ToJa'; // użytkownik serwera
  NMSMTP1.Connect; // połączenie
  Sleep(100); // poczekaj
  NMSMTP1.PostMessage.FromAddress := [email protected]'; // z jakiego adresu
  NMSMTP1.PostMessage.FromName := 'Kowalski'; // nazwisko użytkownika
  NMSMTP1.PostMessage.Subject := Edit1.Text; // temat
  NMSMTP1.PostMessage.ToAddress.Add([email protected]'); // na jaki adres wysłać
  NMSMTP1.PostMessage.Body.Add('Tresc'); // treść maila
  NMSMTP1.SendMail; // wysyła
  NMSMTP1.Disconnect; // rozłącza
end; 

17 komentarzy

AndrzejS 2006-12-22 08:06

Moje doświadczenia z indy10 pozwalają mi stwierdzić że ich komponenty zawierają zbyt dużo błędów, aby napisać chociaż prostą aplikację. Zrobiłem prosty serwerek FTP, lokalnie działał bez zarzutu, między dwoma komputerami niestety połączenie było zrywane - nie znalazłem przyczyny. Napisanie mini chata za pomoca komponentów indy miało identyczny efekt: lokalnie wszystko dobrze w sieci całkowita porażka. Ostatnie moje doświadczenie dotyczy komponentów idPOP3 i SMTP. W sumie można powiedzieć, że działają, lecz występuje problem z załącznikami. Gdy sprawdzamy załączniki po raz pierwszy można zapisać znaleziony załącznik na dysk, Gdy próbujemy odczytać ponownie załącznik kończy się to niepowodzeniem. Napisanie własnego klienta pocztowego na indy więc odpada. Przekopałem się przez sieć i nie znalazłem rozwiązania tych problemów o których pisałem wcześniej. Jeśli komuś uda się rozwiązać wymienione przeze mnie problemy proszę zapodać gdzieś tu rozwiązania

hdc 2006-02-19 13:24

nic nie napisales o zabezpieczeniach. jak zrobic zeby NIC sie nie robilo po zlym wpisaniu loginy/hasla - brak netu itp. ?

hdc 2006-02-19 12:52

nic nie napisales o zabezpieczeniach. jak zrobic zeby NIC sie nie robilo po zlym wpisaniu loginy/hasla - brak netu itp. ?

jakubkrol 2006-01-31 16:06

[Error] Unit11.pas(118): Undeclared identifier: 'atLogin'

szopenfx 2005-07-07 11:35

taak wszystko fajnie pięknie ale nikt nie wspomniał o autentykacjii błąd \"delphowca\" jest przez to powodowany a wystarczy 1 linijka przed wysyłką :D
 SMTP1.AuthenticationType:=atLogin;

akarame 2005-04-13 22:11

w indy 10 trzeba zrobic tak:
uses
  ...,idAttachmentFile,...;

...
var
  idAttachment : TidAttachmentFile;

begin
...
// dodanie zalacznika;
  try
    idAttachment := TIdAttachmentFile.Create(Form1.Message.MessageParts,'FileName');
  except
      idAttachment.CleanupInstance ;
  end;

...

end;


Message to TidMessage component.

czikenator 2005-02-23 14:31

Załączniki nie działają w INDY 10 :(

Excray 2005-02-16 03:26

a co z autoryzacją?

.::CYMES::. 2004-08-28 12:03

SMTP.UserName a nie SMTP.UserID !!!
To zależy od wersji Indy!!!!

delphowiec 2004-05-06 11:28

Mi to nie działa  wypisuje mi "Connection time out " i blokuje kompa lub scoket 1049 i tak dalej
wpisałem tam gdzie serwer SMTP "mail.tlen.pl" port 25 tak samo ja w Książce "Delphi 7 Cwiczenia zaawansowane " macie jakąś rade ???????Kod źródłowy z ksiązki sie kompiluje ale pożnij nic
Pozdrawiam

prabab 2003-08-30 17:54

SMTP.UserName a nie SMTP.UserID !!!

Hex 2003-03-25 13:43

chee jakie sendmessage??? Ma byc MessageSend!!!

chee 2003-03-23 18:05

nie moge znalezc sendmessage...

chee 2003-03-23 16:56

Okey, tyle na temat wysylania... pozostaje jeszcze kwestia odbierania...

Ktos 2003-03-14 16:32

o co ci chodzi? jaki niezly numer?

Johnny_Bit 2003-03-12 21:06

Azgon, no problem z załącznikami:

TIdAttachment.Create(MessageSend.MessageParts, OpenDialog1.FileName); Jeszcze coś?

ps: Sorry Ktos, ale numer to niezły

aZgon 2003-03-12 20:13

Spoko, ale moglbys jeszcze napisać coś o załącznikach ...