public static IHtmlString Submit(this HtmlHelper helper, object value = null, string viewname = null) { object model; if (value == null) { model = new SubmitViewModel(); } else { var s = value as string; model = s != null ? new SubmitViewModel { Value = s } : value; } string result; if (string.IsNullOrWhiteSpace(viewname)) { var m = (SubmitViewModel)model; Debug.Assert(m != null); var tag = new TagBuilder("input"); tag.Attributes.Add("type", "submit"); tag.AddCssClass("button"); if (!string.IsNullOrWhiteSpace(m.Value)) { tag.Attributes.Add("value", m.Value); } if (!string.IsNullOrWhiteSpace(m.Class)) { tag.AddCssClass(m.Class); } if (!string.IsNullOrWhiteSpace(m.Name)) { tag.Attributes.Add("name", m.Name); } if (!string.IsNullOrWhiteSpace(m.Id)) { tag.Attributes.Add("id", m.Id); } result = tag.ToString(TagRenderMode.SelfClosing); } else { result = ViewHelpers.RenderPartialViewToString(viewname, new ViewDataDictionary(model), helper.ViewContext.Controller.ControllerContext); } return(helper.Raw(result)); }
public static bool SendMail(SendMailViewModel model, ControllerContext controllerContext = null, IEmailLogService logger = null) { logger = logger ?? DependencyResolver.Current.GetService <IEmailLogService>(); try { var message = new MailMessage(); var toes = model.To.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var to in toes) { message.To.Add(to); } message.From = model.FromAddress; message.BodyEncoding = System.Text.Encoding.UTF8; message.IsBodyHtml = true; if (!string.IsNullOrEmpty(model.Bcc)) { toes = model.Bcc.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var to in toes) { message.Bcc.Add(to); } } message.Subject = model.Subject; if (controllerContext != null) { if (model.Files != null) { foreach (var file in model.Files) { var attachment = new Attachment(controllerContext.HttpContext.Server.MapPath(file.Name)) { Name = file.SourceName }; message.Attachments.Add(attachment); } } var viewData = new ViewDataDictionary(model.ViewModel); message.Body = ViewHelpers.RenderPartialViewToString(model.TemplateName, viewData, controllerContext); } else { message.Body = model.Body; if (model.Files != null) { foreach (var file in model.Files) { var attachment = new Attachment(file.Name) { Name = file.SourceName }; message.Attachments.Add(attachment); } } } lock (LockObject) { var client = new SmtpClient(); if (client.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory) { client.EnableSsl = false; } client.Send(message); } logger.Write(model.From, model.To, model.Subject, message.Body, null); return(true); } catch (Exception exception) { logger.Write(model.From, model.To, model.Subject, model.TemplateName, exception); return(false); } }