Mengirim E-Mail Melalui Server SMTP Dengan C

advertisement
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
Download