示例#1
0
        public ActionResult GetSMTPInfo()
        {
            // REMOVE THIS SECTION ONCE THE EMAIL NOTIFICATION HAS BEEN FULLY TESTED
            // Testing SendEmail
            //GlobalVars.EMAIL email = new GlobalVars.EMAIL();
            //email.Body = "This is a test message";
            //email.SenderEmailAddress = "*****@*****.**";
            //email.RecipientsEmailAddress = "*****@*****.**";
            //email.Subject = "Test Message sent from SSS Microservices";
            //GlobalVars.ResultGeneric resultGeneric = new GlobalVars.ResultGeneric();
            //resultGeneric = SQLFunctionsSMTP.SendEmail(email);
            // -------------------------------------------------------

            var watch = System.Diagnostics.Stopwatch.StartNew();

            GlobalVars.ResultSMTP resultSMTP = new GlobalVars.ResultSMTP();
            try
            {
                logger.Info("GetSMTPInfo API Request.");
                resultSMTP = SQLFunctionsSMTP.GetSMTPInfo();
                switch (resultSMTP.ReturnCode)
                {
                case 0:
                    logger.Info("GetSMTPInfo API Request was executed Successfully.");
                    Response.StatusCode = (int)HttpStatusCode.OK;
                    break;

                case -2:
                    Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    logger.Fatal("GetSMTPInfo API Request ends with a Fatal Error.");
                    logger.Debug("Returned value:" + JsonConvert.SerializeObject(resultSMTP, Formatting.Indented));
                    Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    break;
                }
            }
            catch (Exception e)
            {
                logger.Fatal("GetSMTPInfo API Request ends with a Fatal Error.");
                resultSMTP.ReturnCode = -2;
                resultSMTP.Message    = e.Message;
                var baseException = e.GetBaseException();
                resultSMTP.Exception = baseException.ToString();
                logger.Fatal("Returned value:" + JsonConvert.SerializeObject(resultSMTP, Formatting.Indented));
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            Response.ContentType = "application/json";
            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            elapsedMs = elapsedMs / 1000;
            resultSMTP.ElapsedTime = elapsedMs.ToString();
            logger.Debug("Returned value:" + JsonConvert.SerializeObject(resultSMTP, Formatting.Indented));
            //var messaje = JsonConvert.SerializeObject(resultCustomers, Formatting.Indented);
            resultSMTP.HttpStatusCode = Response.StatusCode.ToString();
            var messaje = JsonConvert.SerializeObject(resultSMTP, Formatting.Indented);

            logger.Info("Leaving GetSMTPInfo API.");
            //return Json(messaje);
            return(Content(messaje));
        }
 /// <summary>
 /// Get SMTP Server Information
 /// </summary>
 /// <returns></returns>
 static public GlobalVars.ResultSMTP GetSMTPInfo()
 {
     GlobalVars.SMTP       smtp       = new GlobalVars.SMTP();
     GlobalVars.ResultSMTP resultSMTP = new GlobalVars.ResultSMTP()
     {
         ReturnCode     = 0,
         Message        = "",
         ReturnValue    = smtp,
         RecordsCount   = 0,
         HttpStatusCode = ""
     };
     try
     {
         logger.Trace("Entering into GetSMTPInfo Method ...");
         using (ScanningDBContext DB = new ScanningDBContext())
         {
             var results = DB.Smtp.FirstOrDefault();
             if (results != null)
             {
                 resultSMTP.RecordsCount = 1;
                 smtp.HostName           = (results.HostName ?? "").Trim();
                 smtp.PortNumber         = results.PortNumber;
                 smtp.SenderEmailAddress = (results.SenderEmailAddress ?? "").Trim();
                 smtp.EnableSSLFlag      = Convert.ToBoolean(results.EnableSslflag);
                 smtp.SenderName         = (results.SenderName ?? "").Trim();
                 smtp.UserName           = (results.UserName ?? "").Trim();
                 smtp.Password           = (results.Password ?? "").Trim();
             }
             else
             {
                 //There is no record in the database
             }
         }
         resultSMTP.ReturnValue = smtp;
         resultSMTP.Message     = "GetSMTPInfo transaction completed successfully. Number of records found: " + resultSMTP.RecordsCount;
         logger.Debug(resultSMTP.Message);
     }
     catch (Exception e)
     {
         logger.Error("Error:" + e.Message + "\n" + "Exception: " + e.InnerException);
         resultSMTP.ReturnCode = -2;
         resultSMTP.Message    = e.Message;
         var baseException = e.GetBaseException();
         resultSMTP.Exception = baseException.ToString();
     }
     logger.Trace("Leaving GetSMTPInfo Method ...");
     return(resultSMTP);
 }
        /// <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);
        }