How To Send Mail Synchronously From ASP.NET

.NET Framework , Posted at : Aug/12/2010  
3208 Views   5 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]
Agus  Apr/19/2012 02:31:27 :

bagaimana kita tau SMTP kita dan portnya ..  ???

soalnya saya pakai smtp google seperti code di atas gak bisa ..

ini bacaan erornya

 

"Could not send the e-mail - error: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at"

 

tq before

Rully  Apr/27/2012 08:59:51 :

Agus > SMTP port tergantung dari provider email yang digunakan dan info tersebut dapat dicari di internet :) Kebetulan contoh yang saya gunakan yaitu menggunakan google apps dan info smtp portnya ada di google :)

Rizkiawan Achadi  May/21/2012 09:28:55 :

wahh , thx sharingnya

smoga smakin bertambah ilmunya .. amin 

Eko Kosasih  Mar/06/2013 03:37:30 :

 Bagaimana kalau ada attachment nya?

Mohon Bantuan nya ya

 

Rully  Mar/17/2013 12:04:19 :

Eko > Attachment cukup ditambahkan dari instance MailMessage nya, MailMessage.Attachments.Add(New Attachment("Tambahkan Attachment disini"))..


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

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