Sūtīt e-pastus ar pielikumiem, izmantojot Delphi & Indy

Zemāk ir norādījumi par "e-pasta sūtītāja" izveidi, kas ietver iespēju e-pasta ziņojumus un pielikumus sūtīt tieši no Delphi programmas. Pirms mēs sākam, apsveriet alternatīvu ...

Pieņemsim, ka citu programmu starpā jums ir lietojumprogramma, kas darbojas ar dažiem datu bāzes datiem. Lietotājiem ir jāeksportē dati no jūsu lietojumprogrammas un nosūtiet datus pa e-pastu (piemēram, ziņojumu par kļūdu). Bez turpmāk izklāstītās pieejas dati ir jāeksportē uz ārēju failu un pēc tam to nosūtīšanai jāizmanto e-pasta klients.

Sūtīt e-pastu no Delphi

Ir daudz veidu, kā nosūtīt e-pastu tieši no Delphi, taču vienkāršākais veids ir izmantot ShellExecute API. Tas nosūtīs e-pastu, izmantojot datorā instalētu noklusējuma e-pasta klientu. Lai gan šī pieeja ir pieņemama, jūs nevarat nosūtīt pielikumus šādā veidā.

Cita metode, izmantojot e-pastu, šoreiz izmanto Microsoft Outlook un OLE ar pielikumu atbalsts, taču pēc tam ir jāizmanto MS Outlook.

Vēl viena iespēja ir izmantot Delphi iebūvēto Windows Simple Mail API atbalstu. Tas darbojas tikai tad, ja lietotājam ir instalēta ar MAPI saderīga e-pasta programma.

instagram viewer

Tiek izmantota tehnika, par kuru mēs šeit diskutējam Indija (Internet Direct) komponenti - lielisks interneta komponentu komplekts, kas sastāv no populāriem interneta protokoliem, kas rakstīti Delfos un balstās uz bloķējošām ligzdām.

TIdSMTP (Indy) metode

Sūtīt (vai izgūt) e-pasta ziņojumus ar Indy komponentiem (kas tiek piegādāti ar Delphi 6+) ir tikpat vienkārši, kā nomainīt komponentu vai divus uz veidlapas, iestatīt dažus rekvizītus un “noklikšķināt uz pogas”.

Lai nosūtītu e-pastu ar pielikumiem no Delphi, izmantojot Indy, mums būs nepieciešami divi komponenti. Pirmkārt, TIdSMTOP tiek izmantots, lai izveidotu savienojumu un sazinātos (nosūtītu pastu) ar SMTP serveri. Otrkārt, TIdMessage apstrādā ziņojumu glabāšanu un kodēšanu.

Kad ziņojums ir izveidots (kad TIdMessage ir "piepildīta" ar datiem), e-pasts tiek piegādāts SMTP serverim, izmantojot TIdSMTP.

E-pasta sūtītāja avota kods

Esmu izveidojis vienkāršu pasta sūtītāja projektu, kuru es paskaidrošu zemāk. Pilnu avota kodu var lejupielādēt šeit.

Piezīme: Šī saite ir tieša projekta lejupielāde ZIP failā. Jums vajadzētu būt iespējai to atvērt bez jebkādām problēmām, bet, ja nevarat, izmantojiet 7-rāvējslēdzējs lai atvērtu arhīvu, lai jūs varētu izvilkt projekta failus (kas tiek saglabāti mapē ar nosaukumu Nosūtīt pastu).

Kā redzams no projektēšanas laika ekrānuzņēmuma, lai nosūtītu e-pastu, izmantojot TIdSMTP komponentu, jums vismaz jānorāda SMTP pasta serveris (resursdators). Pati ziņojumam ir jāaizpilda parastās e-pasta daļas, piemēram, No plkst, Uz, Priekšmetsutt.

Šis ir kods, ar kuru var nosūtīt vienu e-pastu ar pielikumu:

procedūra TMailerForm.btnSendMailClick (Sūtītājs: TObject); sākt StatusMemo. Skaidrs; // iestatīšana SMTP SMTP.Host: = ledHost. Teksts; SMTP.ports: = 25; // iestatīšanas pasta ziņojums MailMessage. No plkst. Adrese: = ledFrom. Teksts; MailMessage. Saņēmēji. E-pasta adreses: = ledTo. Teksts + ',' + ledCC.Text; MailMessage. Temats: = ledSubject. Teksts; MailMessage. Korpuss. Teksts: = Korpuss. Teksts; ja FileExists (ledAttachment. Teksts) tad TIdAttachment. Izveidot (MailMessage. MessageParts, ledAttachment. Teksts); //Nosūtīt pastumēģinietmēģiniet SMTP.savienojums (1000); SMTP.Send (MailMessage); izņemotieslēgts E: Izņēmums darīt. StatusMemo. Līnijas. Ielikt (0, 'KĻŪDA:' + E. Ziņojums); beigas; beidzotja SMTP.Pievienots tad SMTP.Atvienot; beigas; beigas; (* btnSendMail klikšķis *)

Piezīme: Pirmkodā atradīsit divas papildu procedūras, kuras tiek izmantotas Saimnieks, No plkst, un Uz noturīgi rediģēšanas lodziņi, kuru glabāšanai tiek izmantots INI fails.

instagram story viewer