Spodaj so navodila za ustvarjanje "e-poštnega pošiljatelja", ki vključuje možnost pošiljanja e-poštnih sporočil in prilog neposredno iz aplikacije Delphi. Preden začnemo, razmislimo o alternativi ...
Recimo, da imate med drugimi nalogami tudi aplikacijo, ki deluje na nekaterih podatkih baze podatkov. Uporabniki morajo izvoziti podatke iz vaše aplikacije in podatke pošljete po e-pošti (na primer poročilo o napaki). Brez spodaj opisanega pristopa morate podatke izvoziti v zunanjo datoteko in za pošiljanje uporabiti e-poštni odjemalec.
Pošiljanje e-pošte od Delphija
Obstaja več načinov, kako lahko pošljete e-pošto neposredno iz Delphija, vendar je najpreprostejši način uporabe ShellExecute API. To sporočilo bo poslano s privzetim odjemalcem e-pošte, nameščenim v računalniku. Čeprav je ta pristop sprejemljiv, prilog ne morete poslati na ta način.
Druga tehnika uporablja Microsoft Outlook in OLE, da tokrat pošljeta e-pošto s podpora za prilogo, vendar je treba uporabiti MS Outlook.
Še ena možnost je uporaba vgrajene podpore za Delphi za Windows Simple Mail API. To deluje le, če ima uporabnik nameščen e-poštni program, skladen z MAPI.
Uporablja se tehnika, o kateri razpravljamo tukaj Indy (Internet Direct) komponente - odličen paket internetnih komponent, sestavljen iz priljubljenih internetnih protokolov, napisanih v Delfih in ki temeljijo na blokirnih vtičnicah.
Metoda TIdSMTP (Indy)
Pošiljanje (ali pridobivanje) e-poštnih sporočil s komponentami Indy (ki je dobavljeno z Delphi 6+) je tako enostavno, kot da na obrazcu spustite komponento ali dve, nastavite nekatere lastnosti in "kliknete gumb".
Za pošiljanje e-poštnega sporočila s prilogami podjetja Delphi s pomočjo Indy bomo potrebovali dve komponenti. Prvič, TIdSMTOP se uporablja za povezovanje in komunikacijo (pošiljanje pošte) s strežnikom SMTP. Drugič TIdMessage obravnava shranjevanje in kodiranje sporočil.
Ko je sporočilo sestavljeno (kdaj TIdMessage je "napolnjena" s podatki), e-poštno sporočilo se dostavi na SMTP strežnik s pomočjo TIdSMTP.
Izvorna koda pošiljatelja
Ustvaril sem preprost projekt pošiljatelja pošte, ki ga razlagam spodaj. Celotno izvorno kodo lahko prenesete tukaj.
Opomba: Ta povezava je neposreden prenos datoteke ZIP za projekt. Morate ga odpreti brez težav, če pa ne morete, uporabite 7-zadrga da odprete arhiv, da lahko izvlečete projektne datoteke (ki so shranjene v imenovani mapi Pošlji pošto).
Kot je razvidno iz zaslona časa zasnove, pošljite e-poštno sporočilo s pomočjo TIdSMTP komponento, morate navesti vsaj e-poštni strežnik SMTP (gostitelja). Samo sporočilo potrebuje izpolnjene redne dele e-pošte, kot je Od, Do, Predmetitd.
Tu je koda, ki obravnava pošiljanje enega e-poštnega sporočila s prilogo:
postopek TMailerForm.btnSendMailClick (Pošiljatelj: TObject); začeti StatusMemo. Jasno; // namestitev SMTP SMTP.Host: = ledHost. Besedilo; SMTP.Port: = 25; // nastavitev e-poštnega sporočila MailMessage. Od. Naslov: = ledFrom. Besedilo; MailMessage. Prejemniki. EMailAddresses: = ledTo. Besedilo + ',' + ledCC.Text; MailMessage. Zadeva: = ledSubject. Besedilo; MailMessage. Telo. Besedilo: = Telo. Besedilo; če FileExists (ledAttachment). Besedilo) torej TIdAttachment. Ustvari (MailMessage. Sporočilo del, ledAttachment. Besedilo); //Pošlji poštoposkusiposkusi SMTP.Connect (1000); SMTP.Send (MailMessage); razennaprej E: Izjema je. StatusMemo. Vrstice. Vstavite (0, 'NAPAKA:' + E. Sporočilo); konec; končnoče SMTP. Povezana torej SMTP.Disconnect; konec; konec; (* klik btnSendMail *)
Opomba: Znotraj izvorne kode najdete dva dodatna postopka, ki se uporabljata za določanje vrednosti Gostitelj, Od, in Do urejanje oken obstojno z uporabo datoteke INI za shranjevanje.