/// <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);
        }
Beispiel #2
0
        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));
        }