How To Send Mail Synchronously From ASP.NET

Posted at : Aug/12/2010
4204 Views

.NET Framework telah menyediakan library untuk mengirimkan email melalui aplikasi yang dibuat di atas .NET Framework. Contoh yang akan diberikan kali ini adalah bagaimana mengirim email dari ASP.NET secara synchronous. Pengiriman email di ASP.NET dapat dibuat secara programmatically atau melalui setting konfigurasi di fie web.config. Default pemrosesan email menggunakan synchronous, artinya proses eksekusi kode dilakukan secara berurutan atau sequential. Namun kita diberikan pilihan untuk membuatnya secara asynchronous. 

Contoh yang saya buat ini menggunakan ASP.NET 4.0, Visual Studio 2010, dan VB 10. Anda harus menyesuaikan versi bahasa VB yang digunakan, karena disini saya menggunakan beberapa fitur baru di VB 10 seperti Collection Initializer dan Implicit Line Continuation. Fitur-fitur baru di VB 10 dapat dilihat di artikel berikut ini : First Look Of Some New Beta 1 VB 10 Language Features.  

Berikut langkah-langkahnya :

1. Pengiriman Email Secara Synchronous (Programmatically)

a. Buat sebuah asp.net web project template. Tambahkan ScriptManager, UpdatePanel, UpdateProgress, Button, Label dan sebuah file image yang akan digunakan sebagai progressbar kedalam web form :

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:Button ID="btnSendMailSync" runat="server" 
        Text="Send Mail Synchronous" />
        <br />
        <asp:Label ID="lblInfoSync" runat="server" />
        <asp:UpdateProgress ID="UpdateProgress1" runat="server" 
        AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
                <asp:Image ID="img1" runat="server" 
                ImageUrl="~/Images/progressbar_green.gif" />
            </ProgressTemplate>
        </asp:UpdateProgress>
    </ContentTemplate>
</asp:UpdatePanel>

b. Lakukan imports terhadap namespace berikut :

Imports System.Net.Mail

c. Ketikkan kode berikut untuk button diatas :

    Protected Sub btnSendMailSync_Click() Handles btnSendMailSync.Click

        Dim myMail = New MailMessage() With {
            .From = New MailAddress("rully@yulianmf.com",
                                    "Rully Yulian MF"),
            .Subject = "Email from ASP.NET",
            .Body = "Hello, sent at : " & Now.ToLongDateString
        }

        myMail.To.Add("rully@native-enterprise.net")

        Dim mailClient = New SmtpClient With {
            .Host = "smtp.gmail.com",
            .Port = 587,
            .DeliveryMethod = SmtpDeliveryMethod.Network,
            .EnableSsl = True
        }

        Try
            mailClient.Send(myMail)
            lblInfoSync.Text = "Success"
        Catch ex As Exception
            lblInfoSync.Text = ex.Message
        End Try

    End Sub

Dari kode diatas dapat dilihat bahwa untuk membuat pesan yang akan dikirim dibuat dengan menggunakan class MailMessage. Kita definisikan alamat email pengirim, subject, body dan alamat email yang dituju terhadap class tersebut. Sedangkan untuk mengirim pesan tersebut dibutuhkan SmtpClient class yang mendefinisikan smtp server yang digunakan, port number, dan fitur Ssl untuk security. Informasi port, smtp server harus disesuaikan dengan email yang anda gunakan, dan dapat dicari di internet. Pengiriman email secara synchronous dilakukan dengan memanggil prosedur Send dari SmtpClient object.

d. Buka file web.config dan tambahkan elemen berikut di antara elemen <configuration> :

  <system.net>
    <mailSettings>
      <smtp>
        <network defaultCredentials="false" 
                 userName="rully@yulianmf.com" 
                 password="rahasia_dong" />
      </smtp>
    </mailSettings>
  </system.net>

Setting di web.config tersebut digunakan untuk menyimpan data user name dan password email yang digunakan sebagai mail sender.

e. Jalankan web site nya, klik button synchronous mail :

f. Cek email anda :

 

2. Pengiriman Email Secara Synchronous (web.config setting)

a. Buka file web.config diatas, lakukan modifikasi seperti berikut ini :

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

b. Modifikasi code behind untuk button send mail synchronous menjadi seperti dibawah ini :

    Protected Sub btnSendMailSync_Click() Handles btnSendMailSync.Click

        Dim myMail = New MailMessage() With {
            .Subject = "Email from ASP.NET",
            .Body = "Hello, sent at : " & Now.ToLongDateString
        }

        myMail.To.Add("rully@native-enterprise.net")

        Dim mailClient = New SmtpClient 

        Try
            mailClient.Send(myMail)
            lblInfoSync.Text = "Success"
        Catch ex As Exception
            lblInfoSync.Text = ex.Message
        End Try

    End Sub

c. Jalankan web site, kirim email dengan klik button send mail.

d. Cek email anda :

Dari kode diatas dapat kita lihat bahwa beberapa kode yang sebelumnya ditempatkan di code behind button send mail dipindahkan ke file web.config. Pada artikel berikutnya saya akan membuat contoh pengiriman email dengan teknik asynchronous. 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.