/// <summary> Send email according to this instance's email settings </summary> /// <param name="Email"> Complete information for this email </param> /// <param name="Error"> [OUT] Any error message encountered </param> /// <returns> TRUE if successfully queued, otherwise FALSE </returns> public static bool SendEmail(EmailInfo Email, out string Error) { Error = String.Empty; int replyId = -1; if (Email.ReplayToEmailID.HasValue) { replyId = Email.ReplayToEmailID.Value; } int userId = -1; if (Email.UserID.HasValue) { userId = Email.UserID.Value; } if (Engine_ApplicationCache_Gateway.Settings.Email.Setup.Method == Email_Method_Enum.MsSqlDatabaseMail) { try { // Send database email Engine_Database.Send_Database_Email(Email.RecipientsList, Email.Subject, Email.Body, Email.FromAddress, Email.ReplyTo, Email.isHTML, Email.isContactUs, replyId, userId); } catch (Exception ee) { Error = ee.Message; return(false); } } else { try { string email_name = Engine_ApplicationCache_Gateway.Settings.Email.Setup.DefaultFromDisplay; string email_address = Engine_ApplicationCache_Gateway.Settings.Email.Setup.DefaultFromAddress; if (!String.IsNullOrEmpty(Email.FromAddress)) { string[] splitter = Email.FromAddress.Trim().Split("<>".ToCharArray()); if (splitter.Length == 2) { email_name = splitter[0].Trim(); email_address = splitter[1].Trim(); } else { email_address = Email.FromAddress; } } MailMessage myMail = new MailMessage(Email.FromAddress, Email.RecipientsList) { Subject = Email.Subject, Body = Email.Body }; if (!String.IsNullOrEmpty(email_name)) { myMail.Sender = new MailAddress(email_address, email_name); } // Mail this SmtpClient client = new SmtpClient(Engine_ApplicationCache_Gateway.Settings.Email.Setup.SmtpServer, Engine_ApplicationCache_Gateway.Settings.Email.Setup.SmtpPort); client.Send(myMail); // Log this in the database Engine_Database.Log_Sent_Email(Email.FromAddress, Email.RecipientsList, Email.Subject, Email.Body, Email.isHTML, Email.isContactUs, -1); } catch (Exception ee) { Error = ee.Message; return(false); } } return(true); }