public JsonResult SendEmail(NewEmailModel mail) { if (String.IsNullOrEmpty(mail.TmpDir)) throw new ArgumentException(); String tmpDir = Path.Combine(StorageFolder, "tmp", mail.TmpDir); mail.ReplaceNullWithEmpty(); string[] tos = mail.To.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries); string[] ccs = mail.CC.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries); string[] bccs = mail.BCC.Split(new string[] { ",", ";" }, StringSplitOptions.RemoveEmptyEntries); MailMessage message = new MailMessage(); if (!string.IsNullOrEmpty(mail.From)) { message.From = new MailAddress(mail.From); } else { message.From = new MailAddress(ConfigurationManager.AppSettings["smtpFrom"]); } for (int i = 0; i < tos.Length; i++) { message.To.Add(tos[i]); } for (int i = 0; i < ccs.Length; i++) { message.CC.Add(ccs[i]); } for (int i = 0; i < bccs.Length; i++) { message.Bcc.Add(bccs[i]); } if (mail.CCSender) message.CC.Add(mail.From); message.Subject = mail.Subject; message.Body = mail.Body; message.IsBodyHtml = true; //move files for (int i = 0; i < mail.Attachments.Count; i++) { EmailAttachment attachment = mail.Attachments[i]; string source = Path.Combine(StorageFolder, attachment.UniqueFileName); string destination = Path.Combine(tmpDir, attachment.FileName); System.IO.File.Move(source, destination); } //add attachments DirectoryInfo dir = new DirectoryInfo(tmpDir); FileInfo[] files = dir.GetFiles(); for (int i = 0; i < files.Length; i++) { message.Attachments.Add(new Attachment(files[i].FullName)); } //send email using smtp using (SmtpClient smtpServer = new SmtpClient(ConfigurationManager.AppSettings["smtpServer"], Int32.Parse(ConfigurationManager.AppSettings["smtpPort"]))) { smtpServer.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["smtpUserName"], ConfigurationManager.AppSettings["smtpPassword"]); smtpServer.EnableSsl = Boolean.Parse(ConfigurationManager.AppSettings["smtpEnableSSL"]); smtpServer.Send(message); } message.Dispose(); //cleanup tmp dir dir.Delete(true); return Json(new { Success = true }, JsonRequestBehavior.AllowGet); }