Click here to load reader
Upload
learningtech
View
2.583
Download
2
Embed Size (px)
Citation preview
MvcMailer
By Jax
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
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;
Send
var userMailer = new UserMailer();
userMailer.Welcome().Send();
userMailer.Welcome().SendAsync();
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
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
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);
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;
}