How To Send Mail Synchronously From ASP.NET

ASP.NET - .NET Framework , Posted at : Aug/12/2010  
960 Views   0 Comments

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

 


[Comments]

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

SFCV
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 3175 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2592 times  
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 2180 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 2127 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 1806 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News