E-mailek küldése mellékletekkel a Delphi & Indy használatával

click fraud protection

Az alábbiakban bemutatjuk az "e-mail küldő" létrehozására vonatkozó utasításokat, amelyek tartalmazzák az e-mailek és a mellékletek közvetlenül a Delphi alkalmazásból történő küldésének lehetőségét. Mielőtt elkezdenénk, mérlegeljük az alternatívát ...

Tegyük fel, hogy van egy olyan alkalmazás, amely más adatbázis-adatokkal működik, többek között a feladatok között. A felhasználóknak adatokat kell exportálni az alkalmazásból és küldje el az adatokat e-mailben (például hibajelentésként). Az alább ismertetett megközelítés nélkül exportálnia kell az adatokat egy külső fájlba, majd e-mail klienssel kell elküldenie azokat.

E-mail küldés a Delphiből

Sokféle módon lehet e-mailt küldeni közvetlenül a Delphitől, de a legegyszerűbb módszer a ShellExecute API. E-mailt küld a számítógépre telepített alapértelmezett e-mail klienssel. Noha ez a megközelítés elfogadható, nem tudja elküldeni a mellékleteket.

Egy másik módszer a Microsoft Outlook és az OLE használatával küldi el az e-mailt, ezúttal val vel melléklet támogatást, de ehhez szükség van az MS Outlook használatára.

instagram viewer

Egy másik lehetőség a Delphi beépített támogatásának használata a Windows Simple Mail API-hoz. Ez csak akkor működik, ha a felhasználónak telepítve van egy MAPI-kompatibilis e-mail program.

A technika, amelyet itt tárgyalunk, használ Indy (Internet Direct) komponensek - egy nagyszerű internetkomponens-csomag, amely a népszerű, Delphi-ben írt és a blokkoló aljzatokra épülő internetes protokollokból áll.

A TIdSMTP (Indy) módszer

E-mail üzenetek küldése (vagy letöltése) az Indy komponensekkel (amelyek a Delphi 6+ -nál szállíthatók) ugyanolyan egyszerű, mint egy vagy két elem eldobása az űrlapra, egyes tulajdonságok beállítása és „gombra kattintás”.

Ahhoz, hogy Indy segítségével elküldhessünk egy e-mailt melléklettel a Delphi-től, két összetevőre lesz szükségünk. Először is a TIdSMTOP arra szolgál, hogy csatlakozzon és kommunikáljon (e-mailt küldjön) egy SMTP szerverrel. Másodszor, a TIdMessage kezeli az üzenetek tárolását és kódolását.

Az üzenet létrehozásakor (amikor TIdMessage "adatokkal" kitöltve), az e-mailt az SMTP szerverhez továbbítják a TIdSMTP.

E-mail küldő forráskódja

Készítettem egy egyszerű levélküldő projektet, amelyet alább magyarázok. A teljes forráskódot itt töltheti le.

Jegyzet: Ez a link közvetlenül letölthető a projekt ZIP fájljába. Önnek képesnek kell lennie arra, hogy bármilyen probléma nélkül megnyissa, de ha nem tudja, akkor használja 7-Zip az archívum megnyitásához kicsomagolhatja a projekt fájlokat (amelyeket egy nevű mappában tárolnak) Levél küldés).

Amint a tervezési időképernyőről látható, e-mailt kell küldeni a TIdSMTP összetevőt, legalább meg kell adnia az SMTP e-mail szervert (gazdagépet). Maga az üzenetnek szüksége van a rendszeresen kitöltött e-mail részekre, például az Tól től, Nak nek, Tantárgystb.

Íme a kód, amely kezeli az egyik e-mail melléklettel történő elküldését:

eljárás TMailerForm.btnSendMailClick (Feladó: TObject); kezdődik StatusMemo. Egyértelmű; // az SMTP beállítása SMTP.Host: = ledHost. Szöveg; SMTP.Port: = 25; // beállító e-mail üzenet MailMessage. Tól től. Cím: = ledFrom. Szöveg; MailMessage. Címzettnek. EMailAddresses: = ledTo. Szöveg + ',' + ledCC.Text; MailMessage. Tárgy: = ledSubject. Szöveg; MailMessage. Test. Szöveg: = Test. Szöveg; ha FileExists (ledAttachment. Szöveg) azután TIdAttachment. Létrehozás (MailMessage. MessageParts, ledAttachment. Szöveg); //levél küldéspróbáld kipróbáld ki SMTP.Connect (1000); SMTP.Send (MailMessage); kivévetovább E: Kivétel. StatusMemo. Vonalak. Beszúrás (0, 'HIBA:' + E. üzenet); vég; végülha SMTP.Connected azután SMTP.Disconnect; vég; vég; (* btnSendMail kattintás *)

Jegyzet: A forráskódon belül két extra eljárást talál, amelyek a Házigazda, Tól tőlés Nak nek A szerkesztődobozok állandóak, INI fájl felhasználásával a tároláshoz.

instagram story viewer