public static bool SendMail(EmailMessage email)
        {
            string statusMessage = string.Empty;

            return(SendMail(email, out statusMessage));
        }
        public static bool SendMail(EmailMessage email, out string statusMessage)
        {
            SmtpClient  smtpClient = new SmtpClient();
            MailMessage mail       = new MailMessage(_SMTPFromDisplay, email.To.First().ToString());

            statusMessage = string.Empty;
            //GetSMTPSettings();
            if (_SMTPDefaultCredentials == true)
            {
                NetworkCredential basicCredential = new NetworkCredential(_SMTPUsername, _SMTPPassword);
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials           = basicCredential;
            }
            else
            {
                smtpClient.UseDefaultCredentials = true;
            }

            smtpClient.Host = _SMTPServer;
            if (_SMTPPort > 0)
            {
                smtpClient.Port = _SMTPPort;
            }

            //Hardcoding SSL settings for gmail SMTP
            if (_SMTPServer.Contains("smtp.gmail.com") || _SMTPServer.Contains("smtp.live.com"))
            {
                smtpClient.EnableSsl = true;
            }

            //mail.From = email.From;

            email.To.Remove(email.To.First());

            foreach (MailAddress toEmail in email.To)
            {
                mail.To.Add(toEmail);
            }
            foreach (MailAddress CCEmail in email.CC)
            {
                mail.CC.Add(CCEmail);
            }
            foreach (MailAddress BccEmail in email.Bcc)
            {
                mail.Bcc.Add(BccEmail);
            }


            if (!string.IsNullOrEmpty(_SMTPFromDisplay.Trim()))
            {
                if (_SMTPDefaultCredentials == true)
                {
                    MailAddress md1 = new MailAddress(_SMTPUsername, _SMTPFromDisplay);
                    mail.From = md1;
                }

                if (!string.IsNullOrEmpty(_SMTPFrom.Trim()))
                {
                    MailAddress md3 = new MailAddress(_SMTPFrom, _SMTPFromDisplay);
                    mail.ReplyTo = md3;
                }
            }


            foreach (Attachment attachment in email.Attachments)
            {
                mail.Attachments.Add(attachment);
            }


            mail.Subject    = email.Subject;
            mail.IsBodyHtml = true;
            mail.Body       = email.Body;
            if (email.AlternateViews.Count != 0)
            {
                foreach (AlternateView altrView in email.AlternateViews)
                {
                    mail.AlternateViews.Add(altrView);
                }
            }
            //else if (ConfigurationSettings.AppSettings["HostName"].ToString() == "MoneyTouch")
            //{
            //    ////Send message
            //    ProcessMailForInlineAttachments(ref mail, mail.Body);
            //}

            //SaveMail(mail);

            smtpClient.Send(mail);

            return(true);
        }
        public static void SendMail(string To, string Cc, string Bcc, string Subject, string Body, ArrayList Attachments, string from, string emailTypeCode, DataTable dtAdviserSMTP, out string fromSMTPEmail, DataSet dsEmailTemplateDetails, out string statusMessage)
        {
            statusMessage = "";
            fromSMTPEmail = "";

            string templateId = string.Empty;
            string reportType = string.Empty;
            AdvisorPreferenceVo advisorPreferenceVo = null;
            AdvisorVo           advisorVo           = null;
            CustomerVo          customerVo          = null;
            RMVo                rmVo                           = null;
            AdvisorBo           advisorBo                      = new AdvisorBo();
            CustomerBo          customerBo                     = new CustomerBo();
            AdvisorStaffBo      advisorStaffBo                 = new AdvisorStaffBo();
            AdviserPreferenceBo adviserPreferenceBo            = new AdviserPreferenceBo();
            DataTable           dtEmailOutgoingParameterValues = dsEmailTemplateDetails.Tables[0];
            DataTable           dtEmailTemplateParameters      = dsEmailTemplateDetails.Tables[1];
            DataTable           dtAdviserEmailTemplate         = dsEmailTemplateDetails.Tables[2];
            DataTable           dtAdviserTemplateParametersPre = dsEmailTemplateDetails.Tables[3];

            _SMTPFrom = from;
            SetAdviserSMTP(dtAdviserSMTP, _SMTPFrom);

            SmtpClient   smtpClient = new SmtpClient();
            EmailMessage email      = new EmailMessage();

            //MailMessage email = new MailMessage(_SMTPFromDisplay, To);
            _SMTPUsername = GetSMTPUserFromPool();
            fromSMTPEmail = _SMTPUsername;

            email.To.Add(To);
            //string name = userVo.FirstName + " " + userVo.MiddleName + " " + userVo.LastName;

            email.ReadSendMailTemplate(emailTypeCode);

            foreach (DataRow dr in dtEmailOutgoingParameterValues.Rows)
            {
                switch (dr["WP_ParameterCode"].ToString())
                {
                case "AID":
                    advisorVo           = advisorBo.GetAdvisor(Convert.ToInt32(dr["WRD_InputParameterValue"].ToString()));
                    advisorPreferenceVo = adviserPreferenceBo.GetAdviserPreference(advisorVo.advisorId);
                    break;

                case "CID":
                    customerVo = customerBo.GetCustomer(Convert.ToInt32(dr["WRD_InputParameterValue"].ToString()));
                    rmVo       = advisorStaffBo.GetAdvisorStaffDetails(customerVo.RmId);
                    break;

                case "RT":
                    reportType = Convert.ToString(dr["WRD_InputParameterValue"]);
                    break;
                }
            }

            foreach (DataRow dr in dtAdviserEmailTemplate.Rows)
            {
                if (dr["WERPTTM_TypeCode"].ToString() == emailTypeCode)
                {
                    email.Body = email.Body.Replace("[EMAIL_BODY]", dr["AHTMLT_TemplateBody"].ToString());
                    templateId = dr["AHTMLT_Id"].ToString();
                    break;
                }
            }

            foreach (DataRow dr in dtEmailTemplateParameters.Rows)
            {
                string templateCode = dr["WERPTPM_TemplateParameterCode"].ToString();
                switch (templateCode)
                {
                case "[ADVISER_NAME]":
                    email.Body = email.Body.Replace(templateCode, advisorVo.FirstName + " " + advisorVo.MiddleName + " " + advisorVo.LastName);
                    break;

                case "[ADVISER_PHONE]":
                    email.Body = email.Body.Replace(templateCode, advisorVo.Phone1Std + "-" + advisorVo.Phone1Number);
                    break;

                case "[ADVISER_MOBILE]":
                    email.Body = email.Body.Replace(templateCode, advisorVo.MobileNumber.ToString());
                    break;

                case "[ADVISER_EMAIL]":
                    email.Body = email.Body.Replace(templateCode, advisorVo.Email.ToString());
                    break;

                case "[A_WEB_SITE]":
                    email.Body = email.Body.Replace(templateCode, advisorPreferenceVo.WebSiteDomainName.ToString());
                    break;

                case "[RM_NAME]":
                    email.Body = email.Body.Replace(templateCode, rmVo.FirstName + " " + rmVo.MiddleName + " " + rmVo.LastName);
                    break;

                case "[RM_MOBILE]":
                    email.Body = email.Body.Replace(templateCode, rmVo.Mobile.ToString());
                    break;

                case "[RM_EMAIL]":
                    email.Body = email.Body.Replace(templateCode, rmVo.Email.ToString());
                    break;

                case "[CUSTOMER_FIRST_NAME]":
                    email.Body = email.Body.Replace(templateCode, customerVo.FirstName);
                    break;

                case "[CUSTOMER_MIDDLE_NAME]":
                    email.Body = email.Body.Replace(templateCode, customerVo.MiddleName);
                    break;

                case "[CUSTOMER_LAST_NAME]":
                    email.Body = email.Body.Replace(templateCode, customerVo.LastName);
                    break;

                case "[START_LINE]":
                    email.Body = email.Body.Replace(templateCode, "<font face=" + "\"" + "[TEXT_FONT_NAME]" + "\"" + " size=" + "\"" + "[TEXT_FONT_SIZE]" + "\"" + " color=" + "\"" + "[TEXT_COLOR]" + "\"" + ">");
                    break;

                case "[END_LINE]":
                    email.Body = email.Body.Replace(templateCode, "</font>");
                    break;

                case "[LINE_BREAK]":
                    email.Body = email.Body.Replace(templateCode, "<br />");
                    break;

                case "[ONE_EMPTY_SPACE]":
                    email.Body = email.Body.Replace(templateCode, "&nbsp;");
                    break;

                case "[HYPERLINK_START]":
                    email.Body = email.Body.Replace(templateCode, "<a href=" + "\"" + "[A_WEB_SITE]" + "\"" + "target=" + "\"" + "_blank" + "\"" + ">");
                    break;

                case "[HYPERLINK_END]":
                    email.Body = email.Body.Replace(templateCode, "</a>");
                    break;

                case "[FONT_BOLD_START]":
                    email.Body = email.Body.Replace(templateCode, "<b>");
                    break;

                case "[FONT_BOLD_END]":
                    email.Body = email.Body.Replace(templateCode, "</b>");
                    break;

                case "[TEXT_FONT_NAME]":
                    email.Body = email.Body.Replace(templateCode, GetTemplateParamerValue(dtAdviserTemplateParametersPre, templateId, dr["WERPTPM_ParameterCode"].ToString()));
                    break;

                case "[TEXT_FONT_SIZE]":
                    email.Body = email.Body.Replace(templateCode, GetTemplateParamerValue(dtAdviserTemplateParametersPre, templateId, dr["WERPTPM_ParameterCode"].ToString()));
                    break;

                case "[TEXT_COLOR]":
                    email.Body = email.Body.Replace(templateCode, GetTemplateParamerValue(dtAdviserTemplateParametersPre, templateId, dr["WERPTPM_ParameterCode"].ToString()));
                    break;

                case "[REPORT_TYPE]":
                    //string reportType = GetTemplateParamerValue(dtAdviserTemplateParametersPre, reportTypeCode, dr["WERPTPM_ParameterCode"].ToString());
                    email.Body    = email.Body.Replace(templateCode, reportType);
                    email.Subject = email.Subject.Replace(templateCode, reportType);
                    break;
                }


                //email.Subject = email.Subject.Replace("MoneyTouch", advisorVo.OrganizationName);


                //email.Body = email.Body.Replace("[ORGANIZATION]", advisorVo.OrganizationName);
                //email.Body = email.Body.Replace("[CUSTOMER_NAME]", userVo.FirstName);
                //if (ConfigurationSettings.AppSettings["HostName"].ToString() == "Wealtherp")
                //{
                //    email.Body = email.Body.Replace("[WEBSITE]", advisorPreferenceVo.WebSiteDomainName);
                //}
                //else if (ConfigurationSettings.AppSettings["HostName"].ToString() == "Citrus")
                //{
                //    email.Body = email.Body.Replace("[WEBSITE]", advisorPreferenceVo.WebSiteDomainName);
                //}
                //email.Body = email.Body.Replace("[CONTACTPERSON]", advisorVo.ContactPersonFirstName + " " + advisorVo.ContactPersonMiddleName + " " + advisorVo.ContactPersonLastName);
                //if (!string.IsNullOrEmpty(advisorVo.Designation))
                //    email.Body = email.Body.Replace("[DESIGNATION]", advisorVo.Designation);
                //else
                //    email.Body = email.Body.Replace("[DESIGNATION]", string.Empty);
                //if (!string.IsNullOrEmpty(advisorVo.Phone1Number.ToString()))
                //    email.Body = email.Body.Replace("[PHONE]", advisorVo.Phone1Std.ToString() + "-" + advisorVo.Phone1Number.ToString());
                //else
                //    email.Body = email.Body.Replace("[PHONE]", string.Empty);

                //if (!string.IsNullOrEmpty(advisorVo.Email))
                //    email.Body = email.Body.Replace("[EMAIL]", advisorVo.Email);
                //else
                //    email.Body = email.Body.Replace("[EMAIL]", string.Empty);


                //if (_SMTPDefaultCredentials == true)
                //{
                //    NetworkCredential basicCredential = new NetworkCredential(_SMTPUsername, _SMTPPassword);
                //    smtpClient.UseDefaultCredentials = false;
                //    smtpClient.Credentials = basicCredential;
                //}
                //else
                //{
                //    smtpClient.UseDefaultCredentials = true;
                //}

                //smtpClient.Host = _SMTPServer;
                //if (_SMTPPort > 0)
                //    smtpClient.Port = _SMTPPort;

                ////Hardcoding SSL settings for gmail SMTP
                //if (_SMTPServer.Contains("smtp.gmail.com") || _SMTPServer.Contains("smtp.live.com"))
                //{
                //    smtpClient.EnableSsl = true;

                //}

                //if (Cc != null && Cc.Trim().Length > 0)
                //    mail.CC.Add(Cc);
                //if (Bcc != null && Bcc.Trim().Length > 0)
                //    mail.Bcc.Add(Bcc);

                //if (!string.IsNullOrEmpty(_SMTPFromDisplay.Trim()))
                //{
                //    if (_SMTPDefaultCredentials == true)
                //    {
                //        MailAddress md1 = new MailAddress(_SMTPUsername, _SMTPFromDisplay);
                //        mail.From = md1;
                //    }

                //    if (!string.IsNullOrEmpty(from.Trim()))
                //    {
                //        MailAddress md3 = new MailAddress(_SMTPFrom, _SMTPFromDisplay);
                //        mail.ReplyTo = md3;
                //    }
                //}



                //mail.Subject = Subject;
                //mail.IsBodyHtml = true;
                //mail.Body = Body;

                //if (mail.AlternateViews.Count != 0)
                //{
                //    foreach (AlternateView altrView in mail.AlternateViews)
                //    {
                //        mail.AlternateViews.Add(altrView);
                //    }
                //}

                //smtpClient.Send(mail);
            }

            foreach (object obj in Attachments)
            {
                Attachment attachment = attachment = new Attachment(obj.ToString());
                email.Attachments.Add(attachment);
            }

            //SendMail(To, Cc, Bcc, email.Subject.ToString(), email.Body.ToString(), Attachments, from, dtAdviserSMTP,out fromSMTPEmail);

            email.Body = email.Body.Replace("[A_WEB_SITE]", advisorPreferenceVo.WebSiteDomainName.ToString());


            email.Body = email.Body.Replace("[A_LOGO]", "<img src='cid:HDIImage' alt='Logo'>");
            string logoPath = string.Empty;

            System.Net.Mail.AlternateView htmlView;
            System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString("Text view", null, "text/plain");
            //System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(hidBody.Value.Trim() + "<image src=cid:HDIImage>", null, "text/html");
            htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(email.Body, null, "text/html");
            //Add image to HTML version
            if (advisorVo != null)
            {
                logoPath = _AdviserLogoDirectory + "\\" + advisorVo.LogoPath;
            }
            if (!File.Exists(logoPath))
            {
                logoPath = _AdviserLogoDirectory + "\\spacer.png";
            }
            //System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(Server.MapPath("~/Images/") + @"\3DSYRW_4009.JPG", "image/jpeg");
            System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(logoPath, "image/jpeg");
            imageResource.ContentId = "HDIImage";
            htmlView.LinkedResources.Add(imageResource);
            //Add two views to message.
            email.AlternateViews.Add(plainTextView);
            email.AlternateViews.Add(htmlView);

            //SendMail(To, Cc, Bcc, email.Subject.ToString(), email.Body.ToString(), Attachments, from, dtAdviserSMTP, out fromSMTPEmail);

            SendMail(email, out statusMessage);
        }