How To Send Mail Asynchronously From ASP.NET

Posted at : Aug/12/2010
3520 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
wepf
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.