/// <summary> /// Send Email /// </summary> /// <returns> Return 0 if the email was sent successfully</returns> static public GlobalVars.ResultGeneric SendEmail(GlobalVars.EMAIL email) { GlobalVars.ResultGeneric result = new GlobalVars.ResultGeneric() { ReturnCode = 0, Message = "", RecordsCount = 0, HttpStatusCode = "" }; try { logger.Trace("Entering into SendEmail Method ..."); // Get SMTP Server Information GlobalVars.ResultSMTP resultSMTP = new GlobalVars.ResultSMTP(); resultSMTP = SQLFunctionsSMTP.GetSMTPInfo(); GlobalVars.SMTP smpt = new GlobalVars.SMTP(); smpt = resultSMTP.ReturnValue; MailMessage mail = new MailMessage(); SmtpClient client = new SmtpClient(); mail.From = new MailAddress(smpt.SenderEmailAddress, smpt.SenderName); //mail.To.Add(new MailAddress(email.RecipientsEmailAddress)); foreach (var address in email.RecipientsEmailAddress.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries)) { mail.To.Add(address); } mail.Subject = email.Subject; mail.Body = email.Body; mail.IsBodyHtml = true; if (email.HasAttachment) { mail.Attachments.Add(new Attachment(new MemoryStream(email.attachment), "Report.pdf")); } client.Port = smpt.PortNumber; client.Host = smpt.HostName; //client.DeliveryMethod = SmtpDeliveryMethod.Network; if (resultSMTP.ReturnValue.EnableSSLFlag) { client.UseDefaultCredentials = false; client.EnableSsl = true; client.Credentials = new System.Net.NetworkCredential(smpt.UserName, smpt.Password); } else { client.EnableSsl = false; client.UseDefaultCredentials = true; } logger.Trace(" Sender: " + smpt.SenderName); logger.Trace(" Recipients: " + email.RecipientsEmailAddress); logger.Trace(" Subject: " + email.Subject); client.Send(mail); logger.Trace("Eamil was sent sucessfully."); } catch (Exception e) { logger.Error("Error:" + e.Message + "\n" + "Exception: " + e.InnerException); result.ReturnCode = -2; result.Message = e.Message; var baseException = e.GetBaseException(); result.Exception = baseException.ToString(); } logger.Trace("Leaving SendEmail Method ..."); return(result); }
public ActionResult SendEmail([FromBody] string emailJS) { var watch = System.Diagnostics.Stopwatch.StartNew(); GlobalVars.ResultGeneric result = new GlobalVars.ResultGeneric(); try { logger.Info("SendEmail API Request."); if (emailJS == null) { Response.StatusCode = (int)HttpStatusCode.BadRequest; result.ReturnCode = -1; result.Message = "Missing argument emailJS"; logger.Warn("SendEmail API Request ends with a Fatal Error."); logger.Warn(result.Message); } else { GlobalVars.EMAIL email = JsonConvert.DeserializeObject <GlobalVars.EMAIL>(emailJS.ToString()); if (!string.IsNullOrWhiteSpace(email.RecipientsEmailAddress)) { result = SQLFunctionsSMTP.SendEmail(email); switch (result.ReturnCode) { case 0: logger.Info("SendEmail API Request was executed Successfully."); Response.StatusCode = (int)HttpStatusCode.OK; break; case -2: Response.StatusCode = (int)HttpStatusCode.InternalServerError; logger.Fatal("SendEmail API Request ends with a Fatal Error."); logger.Debug("Returned value:" + JsonConvert.SerializeObject(result, Formatting.Indented)); Response.StatusCode = (int)HttpStatusCode.InternalServerError; break; } } else { Response.StatusCode = (int)HttpStatusCode.BadRequest; result.ReturnCode = -1; result.Message = "Missing argument recipients"; logger.Warn("SendEmail API Request ends with an Error."); logger.Warn(result.Message); } } } catch (Exception e) { logger.Fatal("SendEmail API Request ends with a Fatal Error."); result.ReturnCode = -2; result.Message = e.Message; var baseException = e.GetBaseException(); result.Exception = baseException.ToString(); logger.Fatal("Returned value:" + JsonConvert.SerializeObject(result, Formatting.Indented)); Response.StatusCode = (int)HttpStatusCode.InternalServerError; } Response.ContentType = "application/json"; watch.Stop(); var elapsedMs = watch.ElapsedMilliseconds; elapsedMs = elapsedMs / 1000; result.ElapsedTime = elapsedMs.ToString(); logger.Debug("Returned value:" + JsonConvert.SerializeObject(result, Formatting.Indented)); //var messaje = JsonConvert.SerializeObject(resultCustomers, Formatting.Indented); result.HttpStatusCode = Response.StatusCode.ToString(); var messaje = JsonConvert.SerializeObject(result, Formatting.Indented); logger.Info("Leaving SendEmail API."); //return Json(messaje); return(Content(messaje)); }