Mengirim E-Mail Melalui Server SMTP Dengan C# Artikel ini telah dipublikasikan pada majalah Mikrodata Vol. 9 Series 17, September 2002. Agus Kurniawan [email protected] http://blog.aguskurniawan.net Pendahuluan Kata E-mail bukan merupakan kata baru dalam kamus dunia informasi. Setiap orang pengguna internet kebanyakan pernah mengirim email bahkan mempunyai account mail lebih dari satu, tetapi sebagian kecil orang belum mengetahui bagaimana proses pengirim email itu sendiri apalagi membuat program untuk mengirim mail. Untuk dapat mengirim email maka kita memerlukan suatu server mail tertentu untuk mengirimnya. Server mail ini bekerja dengan protokol tertentu yang dikenal dengan protokol SMTP (Simple Mail Transprot Protocol) dan umumnya protokol ini menggunakan port 25 untuk akses data. RFC 821 Bagaimana caranya kita berkomunikasi dengan server SMTP ?….Apakah setiap server SMTP mempunyai cara berbeda-beda dalam melakukan komunikasi ?…..Terus..bagaimana email yang kita kirim dapat sampai ke tempat tujuan ? ..dan mungkin banyak lagi pertanyaan yang mengenai ini. Oleh sebab itu diperlukan suatu kesepakatan bersama dalam bagaimana cara melakukan koneksi dan berkomunikasi dengan server SMTP. Standart yang dipakai dalam hal yang berhubungan dengan Simple Mail Transfer Protocol (SMTP) adalah RFC 821 , RFC itu singkatan dari Request for Documents. Gambar 1Model SMTP Dalam RFC 821 dibahas bagaimana kita berhubungan dengan server SMTP dan mengirim email melalui server tersebut. Pada gambar 1 merupakan model pemakaian SMTP. Model ini mengikuti model komunikasi pada umumnya yang mana antara pengirim dan menerima mail membuat koneksi satu sama lainnya. Mengirim E-mail Melalui Server SMTP Dengan C# 1 Sintak SMTP Berdasarkan RFC 821 Ada banyak sintak dalam SMTP tetapi ada sintak yang minimal ada dalam proses berkomunikasi dan mengirim mail: Sintak SMTP HELO MAIL RCPT DATA RSET NOOP QUIT Keterangan Memberikan identitas pengirim SMTP pada penerima SMTP. Intialisasi transaksi mail yang mana data mail dikirim ke satu atau lebih mailbox. Memberikan identitas penerima mail Data mail yang akan dikirim yang pada umumnya diakhiri dengan “<CRLF>.<CRLF>”. CRLF adalah Carriage ReturnLine Feed. Membatalkan pengiriman mail Tidak memberikan efek dari sintak sebelumnya. Biasanya digunakan untuk mengecek apakah hubungan dengan server SMTP masih terhubung. Menutup transaksi mail dan menutup koneksi dengan server. Prosedur Pengiriman Email Beikut ini proses transaksi pengiriman email antara pengirim dan penerima. Keterangan S = Pengirim dan R = penerima , Diasumsikan kita telah terhubung dengan server SMTP : R: 220 ServerXX Simple Mail Transfer Service Ready S: HELO ServerXX R: 250 ServerXX S: MAIL FROM: <[email protected]> R: 250 OK S: RCPT TO: <[email protected]> R: 250 OK S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: blah-blah-blah…………..data terserah anda S: . R: 250 OK S: QUIT R: 221 ServerXX service closing transmission channel Bila penerima email lebih dari satu maka kita cukup melakukan looping pada sintak RCPT saja Mengirim E-mail Melalui Server SMTP Dengan C# 2 Implementasi Dalam Program Aplikasi Dengan C# Bahasa C# merupakan bagian dari Framework .NET dan bahasa C# itu sendiri adalah bahasa pemrograman baru yang diperkenalkan oleh Microsoft. Penulis akan memperkenalkan bagaimana mengirim mail lewat SMTP dengan bahasa C# dengan mudah. Dalam aplikasi kali ini kita tidak menggunakan sintak low level (Win32 programming) ataupun pemrograman socket melainkan menggunakan kelas SmtpMail yang meng-encapsulate dari fungsi-fungsi dalam socket dan kelas MailMessage serta kelas MailAttachment merupakan kelas utilities untuk format message dan file yang di attachment Langkah-langkah ini untuk membuat aplikasi pengiriman email dengan C# antara lain : 1. Membuat project baru C# dengan pilihan Windows Application dan beri nama project yaitu SMTPmail. Gambar 2. Tampilan program 2. Rancang GUI dari project ini seperti pada gambar 2 dan jangan lupa menambahkan windows forms: OpenFileDialog dalam project Mengirim E-mail Melalui Server SMTP Dengan C# 3 3. Menambahkan Reference pada project dengan cara klik menu Project->Add Reference (seperti pada gambar 3). Kemudian pilih System.Web.dll yang diperlihatkan pada gambar 4 dan tekan tombol Select. Jika selesai tekan tombol OK. Gambar 3. Menambah Reference dalam project Mengirim E-mail Melalui Server SMTP Dengan C# 4 Gambar 4 . Pilih Reference System.Web.dll 4. Setelah selesai maka kita melakukan proses coding. Klik dua kali tombol Send maka akan mengarah ke source code editing, berikut ini source code nya : try { // prepare mail data MailMessage msg = new msg.From = msg.To = msg.Cc = msg.Bcc = msg.Subject = msg.Body = MailMessage(); m_sFrom.Text; m_sTo.Text; m_sCc.Text; m_sBcc.Text; m_sSubject.Text; m_sMessage.Text; if(m_sAttachment.Text != "") msg.Attachments.Add(new MailAttachment(m_sAttachment.Text)); // check if HTML mail if(m_bHtml.Checked) { msg.BodyFormat } else { msg.BodyFormat } // sending mail SmtpMail.SmtpServer = SmtpMail.Send(msg); format or not ? = MailFormat.Html; = MailFormat.Text; m_sSMTP.Text; MessageBox.Show("Mail has sent succesfully", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); Mengirim E-mail Melalui Server SMTP Dengan C# 5 } catch(HttpException err) { MessageBox.Show(err.Message, err.Source, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } 5. Agar dapat menggunakan kelas SmtpMail dan MailMessage maka harus ditambahka namespace pada bagian atas dari souce code (file SMTPmail.cs) using using using using using using using using System; System.Drawing; System.Collections; System.ComponentModel; System.Windows.Forms; System.Data; System.Web; // add this line code System.Web.Mail; // add this line code 6. Sedangkan souce code pada saat tombol attachment ( tombol …) diklik: if(openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK) { m_sAttachment.Text = openFileDialog1.FileName; } 7. Sekarang kita melakukan proses debug dan run program. Isi semua data dalam EditBox yang mana Cc dan Bcc itu optional artinya boleh diisi atau tidak. Jika ada yang masih ada dipertanyakan mengenai C# ini, anda dapat bergabung dalam mailing list C# indonesia. Di mailing list ini, anda dapat bertukar pikiran mengenai C# maupun .NET. Untuk bergabung cukup mengirim email kosong ke [email protected] dengan subject Subscribe atau kunjungi situs http://groups.yahoo.com/group/csharp_indo Reference MSDN .NET Framework RFC Mengirim E-mail Melalui Server SMTP Dengan C# 6