8

Click here to load reader

Mvc Mailer

Embed Size (px)

Citation preview

Page 1: Mvc Mailer

MvcMailer

By Jax

Page 2: Mvc Mailer

Scaffold Your Mailer

PM> Scaffold Mailer.Razor UserMailer Welcome,PasswordReset

• Mailers\IUserMailer.cs• Mailers\UserMailer.cs• Views\UserMailer\_Layout.cshtml• Views\UserMailer\Welcome.cshtml• Views\UserMailer\PasswordReset.cshtml

Page 3: Mvc Mailer

Pass Data to Mailer Views

ViewBag.Name = "Sohan"; ViewBag.Comment = myComment;

ViewData["Name"] = "Sohan"; ViewData["Comment"] = myComment;

var comment = new Comment { To = you, Message = "Great Work!" };

ViewData = new ViewDataDictionary(comment);

var comment = new Comment { To = you, Message = "Great Work!" };

ViewData.Model = comment; 

Page 4: Mvc Mailer

Send

var userMailer = new UserMailer(); 

userMailer.Welcome().Send();

userMailer.Welcome().SendAsync();

Page 5: Mvc Mailer

Other Options

# No Interface

PM> Scaffold Mailer.Razor MyMailer Welcome -NoInterface

# This will produce Razor views

PM> Scaffold Mailer.Razor UserMailer Welcome,GoodBye

# This will produce Aspx views

PM> Scaffold Mailer.Aspx UserMailer Welcome,GoodBye

Page 6: Mvc Mailer

Send Multi-part Emails

PM> scaffold Mailer MyMailer Hello –WithText

• Mailers\IMyMailer.cs• Mailers\MyMailer.cs• Views\MyMailer\_Layout.cshtml• Views\MyMailer\Hello.cshtml• Views\MyMailer\_Layout.text.cshtml• Views\MyMailer\Hello.text.cshtml

Page 7: Mvc Mailer

Embed Image or Linked Resource Inside Email

In Your View

@using Mvc.Mailer @Html.InlineImage("logo", "Company Logo") ###

public static IHtmlString InlineImage(this HtmlHelper htmlHelper, string contentId, string alt = "");

In Your Mailer

var resources = new Dictionary<string, string>(); resources["logo"] = @"D:\001.png"; PopulateBody(mailMessage, "WelcomeMessage", resources);

Page 8: Mvc Mailer

My Usingprivate MvcMailMessage getMailMessage(string viewName, object vm = null) {

ViewData.Model = vm;

MvcMailMessage message = Populate(x => { x.ViewName = viewName; });

message.Subject = Regex.Match(message.Body, @"(?<=<title[^>]*>)([^<]*)(?=</title>)", RegexOptions.IgnoreCase

).Value.Trim();

return message; }

public virtual MvcMailMessage MemberEnabledNotice(MemberViewModel vm) {

MvcMailMessage message = getMailMessage("MemberEnabledNotice", vm);

/*To Member*/ message.To.Add(vm.Email);

return message;

}