using System; using System.Collections.Generic; using System.Linq; using System.Web; using MongoDB.Driver; using MongoDB.Bson; using AIAHTML5.API.Properties; using AIAHTML5.API.Constants; using log4net; using System.Net.Mail; using AIAHTML5.API.Utility; using System.Text; using System.IO; using System.Net.Mime; using System.Configuration; using System.Collections; namespace AIAHTML5.API.Models { public class UserUtility { public static bool SendEmail(dynamic UserDetails, bool havePassword, bool unbLockUser = false) { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("inside SendEmail in for havePassword =" + havePassword); try { List lstLinkedResource = new List(); EmailUtility emailUtility = new EmailUtility(); List lstToAddress = new List(); List lstBccAddress = new List(); string emailText = string.Empty; string userId = string.Empty; string userMail = string.Empty; string userName = string.Empty; string fName = string.Empty; string lName = string.Empty; string site_url = Convert.ToString(ConfigurationManager.AppSettings["Site_URL"]); //foreach (KeyValuePair userObj in UserDetails) //{ // if (userObj.Key == "LoginId") // userId = userObj.Value.ToString(); // if (userObj.Key == "EmailId") // userMail = userObj.Value.ToString(); // if (userObj.Key == "FirstName") // fName = userObj.Value.ToString(); // if (userObj.Key == "LastName") // lName = userObj.Value.ToString(); //} if (UserDetails.LoginId != "") userId = UserDetails.LoginId.ToString(); if (UserDetails.EmailId != "") userMail = UserDetails.EmailId.ToString(); if (UserDetails.FirstName != "") fName = UserDetails.FirstName.ToString(); if (UserDetails.LastName != "") lName = UserDetails.LastName.ToString(); string fullName = fName + " " + lName; string logoPath = HttpContext.Current.Server.MapPath("~/content/images/logo.png"); string templatePath = string.Empty; string resetPasswordLink = string.Empty; if (havePassword) { if (unbLockUser) { templatePath = "~/Templates/unblock-User.html"; resetPasswordLink = site_url + "?unb:" + HttpUtility.UrlEncode(userMail); } else { templatePath = "~/Templates/forgot-Password.html"; resetPasswordLink = site_url + "?em:" + HttpUtility.UrlEncode(userMail); } } else templatePath = "~/Templates/forgot-UserId.html"; logger.Debug("inside SendEmail for templatePath= " + templatePath + ", userId= " + userId + ", userMail= " + userMail + ",fullName= " + fullName + ",resetPasswordLink= " + resetPasswordLink); string mailBody = UserUtility.GetMailBodyTextFromTemplate(templatePath, userId, userMail, fullName, resetPasswordLink); lstToAddress.Add(userMail); emailText = mailBody; logger.Debug("emailText= " + emailText); // for embedding images in email if (emailText.Contains(" lstToAddress = new List(); List lstBccAddress = new List(); string userMail = string.Empty; string fullName = string.Empty; string emailMessage = string.Empty; string[] mailToArr = (ConfigurationManager.AppSettings["AdminSupport"]).Split(','); if (mailToArr.Length > 0) { for (int i = 0; i < mailToArr.Length; i++) { lstToAddress.Add(mailToArr[i].ToString()); } } fullName = userInfo["firstName"].ToString() + " " + userInfo["lastName"].ToString(); userMail = userInfo["emailId"].ToString(); emailMessage = userInfo["userMessage"].ToString(); lstToAddress.Add(userMail); emailMessage = emailMessage.Replace("\n", "
"); emailMessage += "

"; string mailSubject = "Admin Support request initiated for:"; emailUtility.sHostName = Convert.ToString(ConfigurationManager.AppSettings["HostAddress"]); emailUtility.sFromAddress = Convert.ToString(ConfigurationManager.AppSettings["SenderEmailAddress"]); emailUtility.bIsBodyHtml = true; emailUtility.bEnableSsl = false; emailUtility.sSubject = mailSubject + " " + userMail; emailUtility.sBodyText = emailMessage; emailUtility.iPort = 25; emailUtility.sToAddresses = lstToAddress; emailUtility.sBccAddresses = lstBccAddress; emailUtility.SendSmtpEmail(); return true; } catch (Exception ex) { logger.Fatal("exception in SendAdminRequestEmail for email =" + userInfo["emailId"] + ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); return false; } } public static bool SendEmail(Newtonsoft.Json.Linq.JObject userInfo, ArrayList mailToList, string sender, string mailSubject = "", string mailBody = "") { ILog logger = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); logger.Debug("Inside SendEmail with UserInfo =" + userInfo); try { EmailUtility emailUtility = new EmailUtility(); List lstToAddress = new List(); List lstBccAddress = new List(); string emailMessage = string.Empty; string senderEmailId = string.Empty; foreach (string email in mailToList) { lstToAddress.Add(email); } emailMessage = "Unable to process request for "; if (UserUtility.CheckIfPropertyExists(userInfo, "username") && !string.IsNullOrEmpty(userInfo["username"].ToString())) emailMessage += "username: " + userInfo["username"].ToString() + ""; if (UserUtility.CheckIfPropertyExists(userInfo, "password") && !string.IsNullOrEmpty(userInfo["password"].ToString())) emailMessage += "& password: " + userInfo["password"].ToString() + "

"; if (UserUtility.CheckIfPropertyExists(userInfo, "emailId") && !string.IsNullOrEmpty(userInfo["emailId"].ToString())) emailMessage += "emailId: " + userInfo["emailId"].ToString() + "

"; if (UserUtility.CheckIfPropertyExists(userInfo, "accountNumber") && !string.IsNullOrEmpty(userInfo["accountNumber"].ToString())) emailMessage += "accountNumber: " + userInfo["accountNumber"].ToString() + "

"; if (string.IsNullOrEmpty(sender)) senderEmailId = Convert.ToString(ConfigurationManager.AppSettings["SenderEmailAddress"]); else senderEmailId = sender; emailMessage += mailBody; emailMessage = emailMessage.Replace("\n", "
"); emailMessage += "

"; emailUtility.sHostName = Convert.ToString(ConfigurationManager.AppSettings["HostAddress"]); emailUtility.sFromAddress = senderEmailId; emailUtility.bIsBodyHtml = true; emailUtility.bEnableSsl = false; emailUtility.sSubject = mailSubject; emailUtility.sBodyText = emailMessage; emailUtility.iPort = 25; emailUtility.sToAddresses = lstToAddress; emailUtility.sBccAddresses = lstBccAddress; emailUtility.SendSmtpEmail(); return true; } catch (Exception ex) { logger.Fatal("exception in SendEmail for username: " + userInfo["username"].ToString() + " & password: " + userInfo["password"].ToString() + " email =" + userInfo["emailId"] + ". msg= " + ex.Message + ", stacktrace= " + ex.StackTrace); return false; } } public static ArrayList GetSupportMailList() { ArrayList supoortMailList = new ArrayList(); string[] mailToArr = (ConfigurationManager.AppSettings["AdminSupport"]).Split(','); if (mailToArr.Length > 0) { for (int i = 0; i < mailToArr.Length; i++) { supoortMailList.Add(mailToArr[i].ToString()); } } return supoortMailList; } protected static bool CheckIfPropertyExists(dynamic dynamicObject, string propertyName) { var res = dynamicObject[propertyName]; if (res != null) return true; else return false; } } }