コード例 #1
0
        public ActionResult SendEmail(EmailBodyViewModel contactModel)
        {
            if (!ModelState.IsValid)
            {
                //Not necessary, but another way to get hold of validation errors
                IEnumerable <ModelError> allErrors = ModelState.Values.SelectMany(v => v.Errors);

                List <string> errorList = new List <string>();

                var modelErrors = allErrors as ModelError[] ?? allErrors.ToArray();
                errorList.Add("<ul class=\"list-unstyled\">");
                foreach (var error in modelErrors)
                {
                    errorList.Add($"<li class=\"text-danger\">{error.ErrorMessage}</li>");
                }
                errorList.Add("</ul>");

                string displayErrors = string.Join(" ", errorList.ToArray());
                TempData["ErrorList"] = displayErrors;

                return(View("Home"));
            }

            EmailBodyViewModel emailBodyModel = new EmailBodyViewModel
            {
                Email   = contactModel.Email,
                Name    = contactModel.Name,
                Subject = contactModel.Subject,
                Message = contactModel.Message
            };

            //Instead of using stringbuilder to create email body, use an online source to create email body such as https://chamaileon.io/
            var emailBody = _renderMvcPartialsContact.RenderPartialViewToString("pvContactPartialViewTemplate", emailBodyModel);

            EmailParametersHelper emailModel = new EmailParametersHelper
            {
                BodyText         = emailBody,
                EmailModelHelper = emailBodyModel
            };
            bool emailSentStatus = SendEmailHelper.SendEmail(emailModel);

            if (emailSentStatus)
            {
                TempData["Status"] = "Email Sent";
                return(View());
            }

            TempData["Status"] = "Email Failed";
            return(View());
        }
コード例 #2
0
        public static bool SendEmail(EmailParametersHelper model)
        {
            var mailMessage = new MailMessage();

            mailMessage.To.Add(new MailAddress(address: model.EmailModelHelper.Email, displayName: model.EmailModelHelper.Name));
            mailMessage.From    = new MailAddress(address: "*****@*****.**", displayName: "Company Name");
            mailMessage.Subject = model.EmailModelHelper.Subject;
            mailMessage.Body    = model.BodyText;

            var        pathToAttachment = HttpContext.Current.Server.MapPath("~/UploadedFiles/upload.zip");
            Attachment attachment       = new Attachment(pathToAttachment)
            {
                Name = "Upload.zip"
            };

            mailMessage.Attachments.Add(attachment);

            mailMessage.IsBodyHtml = true;

            bool isDebuggerEnabled = HttpContext.Current.IsDebuggingEnabled;

            if (isDebuggerEnabled)
            {
                try
                {
                    using (var smtp = new SmtpClient())
                    {
                        var credential = new NetworkCredential
                        {
                            UserName = "******",
                            Password = "******"
                        };
                        smtp.Credentials             = credential;
                        smtp.Host                    = "sMtpHost";
                        smtp.Port                    = Convert.ToInt32(90);
                        smtp.DeliveryMethod          = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                        smtp.PickupDirectoryLocation = @"W:\EmailPickUp\";//Change to your own location
                        smtp.EnableSsl               = false;

                        smtp.Send(mailMessage);
                        return(true);
                    }
                }
                catch (SmtpFailedRecipientException e)
                {
                    throw new ApplicationException($"Failed to send email {e}");
                }
                catch (SmtpException e)
                {
                    throw new ApplicationException($"Failed to send email {e}");
                }
                catch (Exception e)
                {
                    throw new ApplicationException($"Failed to send email {e}");
                }
            }

            try
            {
                using (var smtp = new SmtpClient())
                {
                    smtp.UseDefaultCredentials = false;
                    var credential = new NetworkCredential
                    {
                        UserName = "******",
                        Password = "******"
                    };
                    smtp.Credentials    = credential;
                    smtp.Host           = "sMtpHost";
                    smtp.Port           = Convert.ToInt32("sMtpPort");
                    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                    smtp.EnableSsl      = Convert.ToBoolean("sMtpRequiresSll");


                    smtp.Send(mailMessage);
                    return(true);
                }
            }
            catch (SmtpFailedRecipientException e)
            {
                throw new ApplicationException($"Failed to send email {e}");
            }
            catch (SmtpException e)
            {
                throw new ApplicationException($"Failed to send email {e}");
            }
            catch (Exception e)
            {
                throw new ApplicationException($"Failed to send email {e}");
            }
        }