How To Send Mail Synchronously From ASP.NET

Posted at : Aug/12/2010
3958 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
irtu
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.