Žemiau pateikiamos instrukcijos, kaip sukurti „el. Pašto siuntėją“, kuriame yra galimybė siųsti el. Laiškus ir priedus tiesiogiai iš „Delphi“ programos. Prieš pradėdami, apsvarstykite alternatyvą ...
Tarkime, kad turite programą, veikiančią su kai kuriais duomenų bazės duomenimis, be kitų užduočių. Naudotojai turi eksportuoti duomenis iš jūsų programos ir siųskite duomenis el. paštu (pvz., apie klaidų ataskaitą). Nesinaudodami toliau pateiktu metodu, turite eksportuoti duomenis į išorinį failą, o tada siųsti el. Pašto klientui.
Siųsti el. Laišką iš „Delphi“
Yra daugybė būdų, kaip galite siųsti el. Laišką tiesiai iš „Delphi“, tačiau paprasčiausias būdas yra naudoti „ShellExecute“ API. El. Laiškas bus išsiųstas naudojant numatytąją kompiuteryje įdiegtą el. Pašto programą. Nors šis požiūris yra priimtinas, jūs negalite tokiu būdu siųsti priedų.
Šiuo metu el. Laiškams siųsti naudojama kita technika - „Microsoft Outlook“ ir OLE su priedų palaikymą, tačiau tada reikia naudoti „MS Outlook“.
Dar viena galimybė yra naudoti įmontuotą „Delphi“ palaikymą „Windows Simple Mail“ API. Tai veikia tik tuo atveju, jei vartotojas turi įdiegtą su MAPI suderinamą el. Pašto programą.
Taikoma technika, kurią čia aptariame Indy („Internet Direct“) komponentai - puikus interneto komponentų rinkinys, kurį sudaro populiarūs interneto protokolai, parašyti Delfyje ir pagrįsti blokuojančiais lizdais.
TIdSMTP (Indy) metodas
El. Pašto pranešimų siuntimas (arba gavimas) naudojant „Indy“ komponentus (kurie pristatomi su „Delphi 6+“) yra toks pat lengvas, kaip numesti komponentą ar du į formą, nustatyti kai kurias ypatybes ir „paspausti mygtuką“.
Norėdami išsiųsti el. Laišką su priedais iš „Delphi“ naudodami „Indy“, mums reikės dviejų komponentų. Pirma, TIdSMTOP naudojamas prisijungti ir susisiekti (siųsti laiškus) su SMTP serveriu. Antra, „TIdMessage“ tvarko žinučių saugojimą ir kodavimą.
Kai pranešimas sukonstruotas (kada „TIdMessage“ yra "užpildytas" duomenimis), el. laiškas į SMTP serverį pristatomas naudojant TIdSMTP.
El. Pašto siuntėjo šaltinio kodas
Aš sukūriau paprastą pašto siuntėjo projektą, kurį paaiškinu žemiau. Visą šaltinio kodą galite atsisiųsti čia.
Pastaba: Ši nuoroda yra tiesioginis atsisiuntimas į projekto ZIP failą. Turėtumėte sugebėti atidaryti jį be jokių problemų, bet jei negalite, pasinaudokite 7-užtrauktukas norėdami atidaryti archyvą, kad galėtumėte išgauti projekto failus (kurie yra saugomi aplanke, vadinama Išsiųsti laišką).
Kaip matote iš projektavimo laiko ekrano kopijos, nusiųskite el. Laišką naudodami TIdSMTP komponentą, jūs bent jau turite nurodyti SMTP pašto serverį (pagrindinį kompiuterį). Pačiam pranešimui reikia užpildyti įprastas el. Pašto dalis, pvz., Iš, Kam, Temair kt.
Štai kodas, kurį naudojant galima siųsti vieną el. Laišką su priedu:
procedūra TMailerForm.btnSendMailClick (Siuntėjas: TObject); prasideda „StatusMemo“. Skaidrus; // sąrankos SMTP SMTP.Host: = ledHost. Tekstas; SMTP.portas: = 25; // sąrankos pašto pranešimas „MailMessage“. Iš. Adresas: = ledFrom. Tekstas; „MailMessage“. Gavėjai. El. Pašto adresai: = ledTo. Tekstas + ',' + ledCC.Text; „MailMessage“. Tema: = ledSubject. Tekstas; „MailMessage“. Kūnas. Tekstas: = Kūnas. Tekstas; jei „FileExists“ („ledAttachment“). Tekstas) tada „TIdAttachment“. Kurti („MailMessage“. „MessageParts“, „ledAttachment“. Tekstas); //Išsiųsti laiškąbandytibandyti „SMTP.Connect“ (1000); „SMTP.Send“ („MailMessage“); išskyrusapie E: Išimtis daryti. „StatusMemo“. Linijos. Įterpti (0, 'KLAIDA:' + E.Message); galas; pagaliaujei SMTP.prijungtas tada SMTP.Atjungti; galas; galas; (* „btnSendMail“ paspaudimas *)
Pastaba: Šaltinio kode rasite dvi papildomas procedūras, kurios naudojamos nustatant Priimančioji, Išir Kam nuolatiniai taisymo langeliai, saugykloje naudojant INI failą.