Jak wysłać e-mail poprzez komponenty Indy lub FastNet
Ktos
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 := 'Ja@MojaSkrzynka.pl'; // z jakiego adresu
NMSMTP1.PostMessage.FromName := 'Kowalski'; // nazwisko użytkownika
NMSMTP1.PostMessage.Subject := Edit1.Text; // temat
NMSMTP1.PostMessage.ToAddress.Add('Nowak@InnaSkrzynka.pl'); // na jaki adres wysłać
NMSMTP1.PostMessage.Body.Add('Tresc'); // treść maila
NMSMTP1.SendMail; // wysyła
NMSMTP1.Disconnect; // rozłącza
end;
Dla Delphi X10 należy podać takie wartości autentykacji:
SMTP.AuthType:=satDefault; // autoryzacja SMTP
Reszta działa poprawnie w 2017 roku
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
nic nie napisales o zabezpieczeniach. jak zrobic zeby NIC sie nie robilo po zlym wpisaniu loginy/hasla - brak netu itp. ?
nic nie napisales o zabezpieczeniach. jak zrobic zeby NIC sie nie robilo po zlym wpisaniu loginy/hasla - brak netu itp. ?
[Error] Unit11.pas(118): Undeclared identifier: 'atLogin'
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;
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.
Załączniki nie działają w INDY 10 :(
a co z autoryzacją?
SMTP.UserName a nie SMTP.UserID !!!
To zależy od wersji Indy!!!!
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
SMTP.UserName a nie SMTP.UserID !!!
chee jakie sendmessage??? Ma byc MessageSend!!!
nie moge znalezc sendmessage...
Okey, tyle na temat wysylania... pozostaje jeszcze kwestia odbierania...
o co ci chodzi? jaki niezly numer?
Azgon, no problem z załącznikami:
TIdAttachment.Create(MessageSend.MessageParts, OpenDialog1.FileName); Jeszcze coś?
ps: Sorry Ktos, ale numer to niezły
Spoko, ale moglbys jeszcze napisać coś o załącznikach ...