c# - Membuat email templating menggunakan Postal MVC 5 dan gmail sebagai mail server

 on Saturday, January 30, 2016  

Biasanya aplikasi web yang ada kirim2 email ke user/client/customer ada semacam template dimana template tersebut yang nantinya akan menjadi content email yang akan dikirim.

ada banyak cara untuk membuat itu. ada yang membuatnya sendiri kemudian disimpan ke dalam table, ada yang dibuat saat runtime dengan concate string. dan banyak macem2nyalah.2. Add reference nya.

Ada nih cara gampang dan singkat membuat email templating menggunakan komponen POSTAL MVC 4/5
1.  Download library nya di http://aboutcode.net/postal, ambil dll nya saja atau pake github
2.  Masukkan dll ke project dengan cara add reference
3.  Setting Postal web config-nya menggunakan gmail mail server
  <system.net>  
   <mailSettings>  
    <smtp deliveryMethod="Network" from="dotnet1235@gmail.com">  
     <network host="smtp.gmail.com" port="587"  
          defaultCredentials="false"  
          userName="sample@gmail.com"  
          password="******"  
          enableSsl="true"/>  
    </smtp>  
   </mailSettings>  
  </system.net>  


4. Buat templatenya di view
 Content-Type: text/html; charset=utf-8  
 @model HcmsV2.Controllers.RegisterNotificationTemplateEmail  
 To: @Model.EmailTo  
 From: dotnet1235@gmail.com  
 Subject: Confirmasi Pendaftaran  
 <html>  
 <head>  
   <title>  
     Testing email thml content type  
   </title>  
 </head>  
 <body>  
   <p>  
     Anda telah mendaftar di HCMS portal. Informasi login Anda adalah:<br />  
     Email : @Model.EmailTo<br />  
     Password: @Model.Password<br />  
     Informasi login anda belum aktive sebelum email dikonfirmasi. 
     Untuk mengkonfirmasi email anda silahkan  
     <a href="@Model.ConfirmationLink">Disini</a>  
     <br /><br />  
     Setelah mengkonfirmasi, silahkan tunggu approval dari admin dari HCMS portal  
     <br /><br /><br />  
     Hormat kami  
     HCMS Service Operator  
     <br />  
     Disclaimer :<br />  
     <ul>  
       <li>  
         The information contained in this e-mail (attachment is included, if any) 
         is confidential and is intended solely for the use of the individual named from 
         BPJS Ketenagakerjaan or entity to whom they are addressed.  
       </li>  
       <li>  
         Therefore, if you are not the intended recipient, is unauthorized to 
         use or disclose this information.  
       </li>  
     </ul>  
     <br />  
     Please notify the sender and delete this e-mail from your system.<br />  
     -------------------------------------------------------------------<br />  
     <ul>  
       <li>  
         Informasi yang terdapat pada surat elektronik ini (termasuk lampirannya, 
         jika ada) bersifat rahasia dan peruntukannya hanya untuk pihak terkait dari 
         BPJS Ketenagakerjaan atau entitas terkait yang ditujukan.  
       </li>  
       <li>Maka, jika Anda tidak termasuk dalam peruntukannya, Anda tidak berhak 
       untuk menggunakan maupun mengungkapkan informasi tersebut.</li>  
     </ul>  
     <br />  
     Mohon memberitahukan kepada pengirim dan menghapus surat 
     elektronik tersebut dari sistem Anda.  
   </p>  
 </body>  
 </html>  


5. Buat modelnya. Kemudian inherit dari object Postal.Email
  public class RegisterNotificationTemplateEmail : Email  
   {  
     public string EmailTo { get; set; }  
     public string ConfirmationLink { get; set; }  
     public string Name { get; set; }  
     public string Password { get; set; }  
     public string ActionName { get; set; }  
     public string ControllerName { get; set; }  
     public string Code { get; set; }  
     public string UserId { get; set; }  
   }  


6. Kemudian pake apa yang sudah dibuat

  // POST: /Account/Register  
     [HttpPost]  
     [AllowAnonymous]  
     [ValidateAntiForgeryToken]  
     public async Task<ActionResult> Register(RegisterViewModel model)  
     {  
       if (ModelState.IsValid)  
       {  
         if (this.IsCaptchaValid("Captcha is not valid"))  
         {  
           var user = new ApplicationUser  
           {  
             UserName = model.Email,  
             Email = model.Email,  
             NIK = model.NIK,  
             Nama = model.Nama  
           };  
           var result = await UserManager.CreateAsync(user, model.Password);  
           if (result.Succeeded)  
           {  
             // 1. setelah sukses daftar kemudian kirim email notifikasi  
             // yang isinya adalah email untuk konfirmasi dari email     
             var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);  
             var callbackUrl = Url.Action("ConfirmEmail", "Account", new { 
             userId = user.Id, code = code }, protocol: Request.Url.Scheme);  
             //await UserManager.SendEmailAsync(user.Id, "Confirm your account",
              "Please confirm your account by clicking this link: 
              <a href=\"" + callbackUrl + "\">link</a>");  
             //ViewBag.Link = callbackUrl;  
             var eMail = new RegisterNotificationTemplateEmail();  
             eMail.EmailTo = user.Email;  
             eMail.Password = model.Password;  
             eMail.Name = user.Nama;  
             eMail.Code = code;  
             eMail.ConfirmationLink = string.Empty;  
             eMail.ControllerName = "Account";  
             eMail.UserId = user.Id;  
             eMail.ConfirmationLink = callbackUrl;  
             eMail.ActionName = "ConfirmEmail";  
             eMail.Send();  
             return RedirectToAction("Sent", "Account");  
           }  
           AddErrors(result);  
         }  
       }  
       // If we got this far, something failed, redisplay form  
       return View(model);  
     }  

7. Hasil testing email templating dari Postal, lihat gambar

8. Sekian. dan selamat mencoba!
c# - Membuat email templating menggunakan Postal MVC 5 dan gmail sebagai mail server 4.5 5 .NET-1235 Saturday, January 30, 2016 Postal Email templating C# Biasanya aplikasi web yang ada kirim2 email ke user/client/customer ada semacam template dimana template tersebut yang nantinya akan menjad...


No comments:

Post a Comment

Copyright © .Net-1235. All Rights Reserved.