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);
}
No comments:
Post a Comment