Exemple #1
0
        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));
        }
Exemple #2
0
        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);
            }
        }