Penjelasan detail tentang pengiriman email dapat dilihat pada link yang telah disebutkan diatas. Berikut langkah-langkah untuk membuat pengiriman email secara asynchronous (disini saya menggunakan VB 10, sesuaikan sintaksnya dengan versi VB yang anda gunakan) :
1. Buat sebuah asp.net web project template.
2. Modifikasi Page Directive web form yang digunakan seperti berikut ini :
atribut Async = true diimplementasikan untuk melakukan proses asynchronous pada web form tersebut.
3. Design user interface berikut ini didalam container div atau table di web form :
4. Tambahkan elemen berikut di file web.config didalam elemen <configuration> :
<system.net>
<mailSettings>
<smtp deliveryMethod="Network"
from="Rully Yulian MF < rully@yulianmf.com >">
<network defaultCredentials="false"
host="smtp.gmail.com"
port="587"
enableSsl="true"
userName="rully@yulianmf.com"
password="rahasia_dong" />
</smtp>
</mailSettings>
</system.net>
5. Imports namespace berikut :
Imports System.Net.Mail
Imports System.ComponentModel
Namespace System.ComponentModel digunakan untuk membuat prosedur yang digunakan sebagai call back delegate.
6. Ketikkan kode berikut di code behind web form :
Private Sub SendMailCompleted(ByVal sender As Object,
ByVal e As AsyncCompletedEventArgs)
lblInfoAsync.Text = e.UserState.ToString & ", "
If e.Error IsNot Nothing Then
lblInfoAsync.Text = e.Error.Message
Else
lblInfoAsync.Text &= "Success."
End If
End Sub
Prosedur diatas nantinya akan dieksekusi setelah proses pengiriman emailnya selesai. Kita dapat mengecek token object yang diberikan pada saat proses pengiriman email dan pengecekan success atau failure email yang dikirim lewat object Error.
7. Ketikkan kode berikut pada event click button send mail :
Protected Sub btnSendAsync_Click() Handles btnSendAsync.Click
Dim myMail = New MailMessage() With {
.Subject = "Asynchronous Email from ASP.NET",
.Body = "Hello, sent at : " & Now.ToLongDateString
}
myMail.To.Add("rully@native-enterprise.net")
Dim mailClient = New SmtpClient
AddHandler mailClient.SendCompleted, AddressOf SendMailCompleted
mailClient.SendAsync(myMail, "Rully")
End Sub
Dari kode diatas dapat dilihat bahwa untuk mengirimkan email secara asynchronous harus menambahkan sebuah prosedur delegate yang digunakan untuk menghandle event SendCompleted. Prosedur delegate yang dibuat pada contoh ini yaitu SendMailCompleted. Untuk mengirim emailnya cukup dengan memanggil prosedur SendAsync dari object SmtpClient. Anda dapat memberikan token object pada prosedur tersebut sebagai identifier di input parameter yang kedua.
8. Jalankan web site tersebut :


9. Cek email anda :

Selamat mencoba :)