How To Send Mail Asynchronously From ASP.NET

Posted at : Aug/12/2010
3780 Views

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 :)


ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Co-Founder & IT Trainer at Native Enterprise | Microsoft Azure Data Scientist | IBM RAG & Agentic AI | IBM Data Science & Data Analyst | Python Certified (PCEP, PCAP) | MOS, MTA, Xamarin Certified, ex MCT | ex MVP

CERTIFICATIONS

Microsoft Certified Associate
IBM RAG and Agentic AI Professional
IBM Data Science Professional IBM Data Analyst Professional
PCAP Associate Python Programmer Certified PCEP Entry Level Python Programmer Certified
Xamarin Certified
MOS 2007
MCPD MCTS
MCAD.NET

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

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