How To Send Mail Asynchronously From ASP.NET

.NET Framework , Posted at : Aug/12/2010  
2917 Views   11 Comments

Pada tulisan sebelumnya saya telah membuat contoh tentang pengiriman email dari asp.net secara synchronous di link berikut ini : How To Send Mail Synchronously From ASP.NET. Kali ini artikel yang ditulis akan menjelaskan tentang pengiriman email secara asynchronous di asp.net, sehingga kita dapat melakukan prosessing kode secara multitasking di dalam web form yang digunakan untuk mengirimkan email.

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 :

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<br />
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnSendAsync" runat="server" 
        Text="Send Mail Asynchronous" />
        <br />
        <asp:Label ID="lblInfoAsync" runat="server" />
        <asp:UpdateProgress ID="UpdateProgress2" runat="server" 
        AssociatedUpdatePanelID="UpdatePanel2">
            <ProgressTemplate>
                <asp:Image ID="img2" runat="server" 
                ImageUrl="~/Images/progressbar_green.gif" />
            </ProgressTemplate>
        </asp:UpdateProgress>
    </ContentTemplate>
</asp:UpdatePanel>

4. Tambahkan elemen berikut di file web.config didalam elemen <configuration> :

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" 
            from="Rully Yulian MF &lt; rully@yulianmf.com &gt;">
        
        <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 :)


[Comments]
Dodi Rustandi  Aug/13/2010 09:17:38 :

Bang itu proses pengirimannya dilakukan diserver setelah kita post webnya atau pas pada saat web yang di buat langsung di run di pc/laptop kita yang terkoneksi ke internet.?

Rully  Aug/13/2010 09:23:57 :

Dodi > Yang penting pc / laptop kita terhubung ke internet. Contoh yang saya buat ini saya jalankan dari laptop localhost saya sendiri dan terhubung ke internet :) ...jadi contoh di atas itu tidak saya publish dulu ke web hosting aplikasi web nya.

Dodi Rustandi  Aug/16/2010 05:15:00 :

bang kenapa alamat emailnya rully@yulianmf.com kenapa ga rully@gmail.com kan smtp nya juga smtp.gmail.com kan dah beda mail server atau seperti apa saya dah nyoba tapi gagal ung

Dodi Rustandi  Aug/16/2010 05:21:42 :

OK udah jalan. makasih tutorial nya heheheh bermanfaat sekali

Rully  Aug/16/2010 08:41:13 :

Dodi > Itu domain yulianmf.com buat email saya alihkan pake Google Apps :)

ARIEBOWO  Aug/18/2010 03:12:23 :

Kenapa saya selalu gagal bang ?

Pesan Error :

"Failure sending mail"

Rully  Aug/18/2010 05:45:00 :

Arie > Sesuaikan port, host dan smtp setting lainnya sesuai dengan email provider yang digunakan.

Ariebowo  Aug/19/2010 08:17:24 :

Saya menggunakan .net framework 3.5.

Untuk configurasi web config selalu ada error pada EnabledSsl = "True". pesan error: "The EnabledSsl Attribute is not declared".

Terima kasih banyak bang atas petunjuk/ilmunya.

Rully  Aug/19/2010 11:55:10 :

Arie > Penulisan elemen atau atribut di web.config itu case sensitif, di cek lagi penulisannya, harusnya enableSsl="true".

Ariebowo  Aug/19/2010 04:50:19 :

Sudah sesuai bang, tapi tetap saja muncul error yang sama.

Saya coba cara lain dengan script dibawah ini tanpa Configuration di WEB.CONFIG, tetapi muncul error =  "Request Fail"

Mohon bantuan bang, maklum masih newbie.

Terima kasih,

============================================================

Dim

mail As

kieky  Feb/27/2011 10:02:52 :

 thx.. sangat membantu.. :)


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

fogh
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Microsoft Certified Trainer | IT Trainer at Native Enterprise | IT Consultant | Software Developer | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.
[Read More...]
Top Download 
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 6083 times  
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4689 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 3554 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 3324 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2706 times  
Links 
Certifications 
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News 
© Copyright 2006-2016   Rully Yulian MF   All rights reserved.