Mengirim Email Dengan Lampiran Menggunakan Delphi & Indy

Di bawah ini adalah petunjuk untuk membuat "pengirim email" yang mencakup opsi untuk mengirim pesan email dan lampiran langsung dari aplikasi Delphi. Sebelum kita mulai, pertimbangkan alternatifnya ...

Misalkan Anda memiliki aplikasi yang beroperasi pada beberapa data basis data, di antara tugas-tugas lainnya. Pengguna perlu mengekspor data dari aplikasi Anda dan mengirim data melalui email (seperti laporan kesalahan). Tanpa pendekatan yang diuraikan di bawah ini, Anda harus mengekspor data ke file eksternal dan kemudian menggunakan klien email untuk mengirimnya.

Mengirim Email Dari Delphi

Ada banyak cara Anda dapat mengirim email langsung dari Delphi, tetapi cara paling sederhana adalah dengan menggunakan ShellExecute API. Ini akan mengirim email menggunakan klien email default yang diinstal pada komputer. Meskipun pendekatan ini dapat diterima, Anda tidak dapat mengirim lampiran dengan cara ini.

Teknik lain menggunakan Microsoft Outlook dan OLE untuk mengirim email, kali ini dengan dukungan lampiran, tetapi MS Outlook kemudian harus digunakan.

instagram viewer

Namun pilihan lain adalah menggunakan dukungan bawaan Delphi untuk Windows Simple Mail API. Ini hanya berfungsi jika pengguna menginstal program email yang sesuai dengan MAPI.

Teknik yang kami diskusikan di sini menggunakan Indy Komponen (Internet Direct) - rangkaian komponen internet yang hebat terdiri dari protokol internet populer yang ditulis dalam Delphi dan didasarkan pada soket pemblokiran.

Metode TIdSMTP (Indy)

Mengirim (atau mengambil) pesan email dengan komponen Indy (yang dikirimkan dengan Delphi 6+) semudah menjatuhkan satu atau dua komponen pada formulir, mengatur beberapa properti, dan "mengklik tombol."

Untuk mengirim email dengan lampiran dari Delphi menggunakan Indy, kita memerlukan dua komponen. Pertama, TIdSMTOP digunakan untuk menghubungkan dan berkomunikasi (mengirim email) dengan server SMTP. Kedua, itu TIdMessage menangani penyimpanan dan pengodean pesan.

Ketika pesan dibangun (kapan TIdMessage "diisi" dengan data), email dikirim ke server SMTP menggunakan TIdSMTP.

Kode Sumber Pengirim Email

Saya telah membuat proyek pengirim surat sederhana yang saya jelaskan di bawah. Anda dapat mengunduh kode sumber lengkap di sini.

catatan: Tautan itu adalah unduhan langsung ke file ZIP untuk proyek tersebut. Anda harus bisa membukanya tanpa masalah, tetapi jika tidak bisa, gunakan 7-Zip untuk membuka arsip sehingga Anda dapat mengekstrak file proyek (yang disimpan dalam folder bernama SendMail).

Seperti yang dapat Anda lihat dari tangkapan layar desain-waktu, untuk mengirim email menggunakan TIdSMTP komponen, Anda setidaknya perlu menentukan server surat SMTP (host). Pesan itu sendiri membutuhkan bagian email reguler yang diisi, seperti Dari, Untuk, Subyek, dll.

Berikut kode yang menangani pengiriman satu email dengan lampiran:

prosedur TMailerForm.btnSendMailClick (Pengirim: TObject); mulai StatusMemo. Bersih; // atur SMTP SMTP.Host: = ledHost. Teks; SMTP.Port: = 25; // mengatur pesan email MailMessage. Dari. Alamat: = ledFrom. Teks; MailMessage. Penerima. EMailAddresses: = ledTo. Teks + ',' + ledCC.Text; MailMessage. Subjek: = ledSubject. Teks; MailMessage. Tubuh. Teks: = Badan. Teks; jika FileExists (ledAttachment. Teks) kemudian Lampiran. Buat (MailMessage. MessageParts, ledAttachment. Teks); // kirim emailmencobamencoba SMTP.Connect (1000); SMTP.Send (MailMessage); kecualidi E: Pengecualian dilakukan. StatusMemo. Garis. Masukkan (0, 'KESALAHAN:' + E.Pesan); akhir; akhirnyajika SMTP. Terhubung kemudian SMTP.Disconnect; akhir; akhir; (* Klik btnSendMail *)

catatan: Di dalam kode sumber, Anda akan menemukan dua prosedur tambahan yang digunakan untuk membuat nilai-nilai Tuan rumah, Dari, dan Untuk edit kotak persisten, menggunakan file INI untuk penyimpanan.