Nižšie sú uvedené pokyny na vytvorenie odosielateľa e-mailov, ktorý obsahuje možnosť odosielania e-mailových správ a príloh priamo z aplikácie Delphi. Než začneme, zvážte alternatívu ...
Predpokladajme, že máte aplikáciu, ktorá okrem iných úloh pracuje s niektorými databázovými údajmi. Používatelia musia exportovať údaje z vašej aplikácie a pošlite údaje prostredníctvom e-mailu (napríklad hlásenie chyby). Bez prístupu uvedeného nižšie musíte údaje exportovať do externého súboru a potom ich odoslať pomocou e-mailového klienta.
Posiela sa e-mail od spoločnosti Delphi
Existuje mnoho spôsobov, ako môžete poslať e-mail priamo z Delphi, ale najjednoduchší spôsob je použitie ShellExecute API. Toto odošle e-mail pomocou predvoleného e-mailového klienta nainštalovaného v počítači. Aj keď je tento prístup prijateľný, nemôžete týmto spôsobom odosielať prílohy.
Ďalšia technika používa na odosielanie e-mailov Microsoft Outlook a OLE s podpora príloh, ale potom sa musí použiť MS Outlook.
Ďalšou možnosťou je použitie zabudovanej podpory Delphi pre rozhranie Windows Simple Mail API. Funguje to iba vtedy, ak má používateľ nainštalovaný e-mailový program kompatibilný s MAPI.
Technika, o ktorej tu diskutujeme, sa používa Indy Komponenty (Internet Direct) - veľký balík internetových komponentov, ktorý pozostáva z populárnych internetových protokolov napísaných v Delphi a založených na blokovacích soketoch.
Metóda TIdSMTP (Indy)
Posielanie (alebo získavanie) e-mailových správ s komponentmi Indy (ktoré sa dodávajú s Delphi 6+) je rovnako jednoduché ako vynechanie komponentu alebo dvoch vo formulári, nastavenie niektorých vlastností a „kliknutie na tlačidlo“.
Na odoslanie e-mailu s prílohami od spoločnosti Delphi pomocou spoločnosti Indy potrebujeme dve zložky. Po prvé, TIdSMTOP Používa sa na spojenie a komunikáciu (odosielanie pošty) so serverom SMTP. Po druhé, TIdMessage spracováva ukladanie a kódovanie správ.
Keď je správa zostavená (keď TIdMessage je "vyplnený" údajmi), e-mail je doručený na SMTP server pomocou TIdSMTP.
Zdrojový kód odosielateľa e-mailom
Vytvoril som jednoduchý projekt na odosielanie e-mailov, ktorý vysvetlím nižšie. Celý zdrojový kód si môžete stiahnuť tu.
Poznámka: Tento odkaz predstavuje priame stiahnutie projektu ZIP do súboru ZIP. Mali by ste byť schopní ho otvoriť bez problémov, ale ak nemôžete, použite 7-Zip otvoriť archív, aby ste mohli extrahovať súbory projektu (ktoré sú uložené v priečinku s názvom Poslať mail).
Ako môžete vidieť z snímky obrazovky v čase návrhu, poslať e-mail pomocou TIdSMTP V takom prípade musíte zadať aspoň poštový server SMTP (hostiteľa). Samotná správa potrebuje vyplnené bežné e-mailové časti, napríklad z, na, predmet, atď.
Tu je kód, ktorý spracováva odosielanie jedného e-mailu s prílohou:
procedúra TMailerForm.btnSendMailClick (Sender: TObject); začať StatusMemo. Jasný; // nastavenie SMTP SMTP.Host: = ledHost. Text; SMTP.Port: = 25; // nastavenie poštovej správy MailMessage. Z. Adresa: = ledOd. Text; MailMessage. Príjemcovia. EMailAddresses: = ledTo. Text + ',' + ledCC.Text; MailMessage. Predmet: = ledSubject. Text; MailMessage. Telo. Text: = Body. Text; ak FileExists (ledAttachment). Text) potom TIdAttachment. Vytvoriť (MailMessage. MessageParts, ledPríloha. Text); //poslať mailvyskúšaťvyskúšať SMTP.Pripojenie (1000); SMTP.Send (MailMessage); lečna E: Výnimka áno. StatusMemo. Linky. Vložiť (0, 'CHYBA:' + E. Správa); koniec; konečneak SMTP.Connected potom SMTP.Disconnect; koniec; koniec; (* btnSendMail Click *)
Poznámka: Vo vnútri zdrojového kódu nájdete ďalšie dva postupy, ktoré sa používajú na vytvorenie hodnôt Hostiteľ, za na editovacie políčka pretrvávajú, na ukladanie používajú súbor INI.