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()); }
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}"); } }