Ispod su upute za izradu "pošiljatelja e-pošte" koja uključuje opciju za slanje poruka e-pošte i privitaka izravno iz Delphi aplikacije. Prije nego što počnemo, razmotrite alternativu ...
Pretpostavimo da među ostalim zadacima imate aplikaciju koja radi na nekim podacima baze podataka. Korisnici trebaju izvoziti podatke iz vaše aplikacije i podatke pošaljite putem e-pošte (poput izvješća o pogrešci). Bez pristupa navedenog u nastavku, podatke morate izvesti u vanjsku datoteku, a zatim ih koristiti za slanje e-pošte.
Slanje e-pošte s Delphija
Postoji mnogo načina na koje možete poslati e-poštu izravno iz Delphija, ali najjednostavniji je način upotrebe ShellExecute API-ja. To će poslati e-poštu pomoću zadanog klijenta e-pošte instaliranog na računalu. Iako je ovaj pristup prihvatljiv, na ovaj način ne možete slati privitke.
Druga tehnika koristi Microsoft Outlook i OLE za slanje e-pošte, ovaj put s podrška za privitak, ali tada se zahtijeva korištenje MS Outlooka.
Još jedna mogućnost je korištenje Delphijeve ugrađene podrške za Windows Simple Mail API. Ovo funkcionira samo ako korisnik ima instaliran MAPI program e-pošte.
Tehnika o kojoj ovdje raspravljamo koristi Indy (Internet Direct) komponente - sjajan internet komponentni paket koji se sastoji od popularnih internetskih protokola napisanih u Delfima i temeljenih na blokiranju utičnica.
Metoda TIdSMTP (Indy)
Slanje (ili preuzimanje) poruka e-pošte s komponentama Indyja (koje se isporučuju s Delphijem 6+) jednostavno je poput ispuštanja komponente ili dvije na obrazac, postavljanja nekih svojstava i "klikom na gumb".
Za slanje e-pošte s prilozima iz Delphija pomoću programa Indy trebat će nam dvije komponente. Prvo, the TIdSMTOP koristi se za povezivanje i komunikaciju (slanje pošte) sa SMTP poslužiteljem. Drugo, the TIdMessage rukuje pohranjivanjem i kodiranjem poruka.
Kad je poruka konstruirana (kada TIdMessage je "ispunjeno" podacima), e-poruka se dostavlja na SMTP poslužitelj pomoću TIdSMTP.
Izvorni kod pošiljatelja
Napravio sam jednostavan projekt pošiljatelja pošte koji objašnjavam u nastavku. Cijeli izvorni kod možete preuzeti ovdje.
Bilješka: Ta veza je izravno preuzimanje u ZIP datoteku za projekt. Trebali biste ga moći otvoriti bez problema, ali ako ne možete, upotrijebite 7-Poštanski da biste otvorili arhivu kako biste mogli izdvojiti datoteke projekta (koje su spremljene u nazvanoj mapi Poslati mail).
Kao što vidite sa snimke vremena dizajniranja, kako biste poslali e-poštu pomoću TIdSMTP komponentu, morate barem specificirati SMTP poslužitelj pošte (host). Sama poruka treba ispuniti redovite dijelove e-pošte, poput Iz, Do, predmetitd.
Evo koda koji obrađuje slanje jedne e-pošte s prilogom:
postupak TMailerForm.btnSendMailClick (pošiljalac: TObject); početi StatusMemo. Čisto; // postavljanje SMTP-a SMTP.Host: = ledHost. Tekst; SMTP.Port: = 25; // postava poruka e-pošte MailMessage. Iz. Adresa: = ledFrom. Tekst; MailMessage. Primatelji. EMailAddresses: = ledTo. Tekst + ',' + ledCC.Text; MailMessage. Subject: = ledSubject. Tekst; MailMessage. Tijelo. Tekst: = Tijelo. Tekst; ako FileExists (ledAttachment). Tekst) zatim TIdAttachment. Stvaranje (MailMessage. Dijelovi poruke, vodio Prilog. Tekst); //poslati mailprobatiprobati SMTP.Connect (1000); SMTP.Send (MailMessage); osimna E: Iznimka je. StatusMemo. Linije. Umetnite (0, 'GREŠKA:' + E.Message); kraj; konačnoako SMTP.Connected zatim SMTP.Disconnect; kraj; kraj; (* klik btnSendMail *)
Bilješka: Unutar izvornog koda pronaći ćete dva dodatna postupka koja se koriste za izradu vrijednosti Domaćin, Iz, i Do uređivanje okvira postojano, koristeći INI datoteku za pohranu.