public static async Task <List <SendDataMailAccount> > GetMailAccounts() { var sqlConStr = ConstantHelper.GetConnectionString(); List <SendDataMailAccount> sendDataMailAccountList = new List <SendDataMailAccount>(); try { using (SqlConnection connectionQueryData = new SqlConnection(sqlConStr)) { if (connectionQueryData.State == System.Data.ConnectionState.Closed) { connectionQueryData.Open(); } #region Execute Command var selectQuery = @" SELECT [MAILACCOUNTID] ,[MAILACCOUNTTITLE] ,[MAILSERVERNAME] ,[MAILACCOUNTNAME] ,[MAILACCOUNTPASSWORD] ,[MAILPOP3PORT] ,[MAILSMTPPORT] ,[FROMMAILADDRESS] FROM [dbo].[PLG_SENDDATA_MAILACCOUNT] WHERE ACTIVE = 1 AND ISDEFAULT = 1 "; using (SqlCommand command = new SqlCommand(selectQuery, connectionQueryData)) { DataTable dataTable = new DataTable(); // create data adapter SqlDataAdapter da = new SqlDataAdapter(command); // this will query your database and return the result to your datatable da.Fill(dataTable); for (int i = 0; i < dataTable.Rows.Count; i++) { var id = Int32.Parse(dataTable.Rows[i]["MAILACCOUNTID"].ToString()); var title = dataTable.Rows[i]["MAILACCOUNTTITLE"]?.ToString(); var serverName = dataTable.Rows[i]["MAILSERVERNAME"]?.ToString(); var accountName = dataTable.Rows[i]["MAILACCOUNTNAME"]?.ToString(); var accountPass = dataTable.Rows[i]["MAILACCOUNTPASSWORD"]?.ToString(); var pop3Port = Int32.Parse(dataTable.Rows[i]["MAILPOP3PORT"].ToString()); var smptpPort = Int32.Parse(dataTable.Rows[i]["MAILSMTPPORT"].ToString()); var fromAddress = dataTable.Rows[i]["FROMMAILADDRESS"]?.ToString(); var sendDataMailAccount = new SendDataMailAccount() { AccountId = id, AccountName = accountName, AccountPass = accountPass, Active = 1, FromMailAddress = fromAddress, MailPop3Port = pop3Port, MailSmtpPort = smptpPort, ServerName = serverName, Title = title }; sendDataMailAccountList.Add(sendDataMailAccount); } } #endregion try { connectionQueryData.Close(); } catch (Exception) { } } } catch (Exception ex) { //TODO:Log } return(sendDataMailAccountList); }
private static async Task SendDataBy(SendDataMailAccount sendDataMailAccount, SendDataItem sendDataItem, string subject, string bodyContent, List <string> recipients, bool useDetailForEveryoneDataValue) { #region Send Email Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); Action <List <string> > sendMailAction = async(recipientList) => { try { sendDataItem.Recipient = recipients.Aggregate((x, y) => x + ";" + y); var host = sendDataMailAccount.ServerName; MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient(host); var from = sendDataMailAccount.FromMailAddress; mail.From = new MailAddress(from); foreach (var recipient in recipientList.Distinct()) { if (recipient.Contains(";") || recipient.Contains(",")) { var rcp = recipient.Replace(";", ",").Trim().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach (var rcpItem in rcp) { mail.To.Add(rcpItem); } } else { mail.To.Add(recipient.Trim()); } } if (string.IsNullOrEmpty(sendDataItem.Cc) == false) { foreach (var ccItem in sendDataItem.Cc.Replace(";", ",").Trim().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { if (string.IsNullOrEmpty(ccItem.Trim()) == false) { mail.CC.Add(ccItem.Trim()); } } } if (string.IsNullOrEmpty(sendDataItem.Bcc) == false) { foreach (var bccItem in sendDataItem.Bcc.Replace(";", ",").Trim().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { if (string.IsNullOrEmpty(bccItem.Trim()) == false) { mail.Bcc.Add(bccItem.Trim()); } } } if (string.IsNullOrEmpty(sendDataItem.ReplyTo) == false) { foreach (var replyToItem in sendDataItem.ReplyTo.Replace(";", ",").Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)) { if (string.IsNullOrEmpty(replyToItem.Trim()) == false) { mail.ReplyToList.Add(replyToItem.Trim()); } } } mail.Subject = subject; mail.Body = bodyContent; mail.IsBodyHtml = true; SmtpServer.Port = sendDataMailAccount.MailSmtpPort; SmtpServer.Credentials = new System.Net.NetworkCredential(sendDataMailAccount.AccountName, sendDataMailAccount.AccountPass); SmtpServer.EnableSsl = false; SmtpServer.Send(mail); sendDataItem.SentDate = DateTimeOffset.Now; } catch (Exception ex) { sendDataItem.ErrorMsg = ex.Message; LoggerService.GetLogger(ConstantHelper.JobLog).Log(new LogItem() { LoggerName = ConstantHelper.JobLog, Title = "GenerateSendDataItemFrom Error", Message = ex.Message, LogItemProperties = new List <LogItemProperty>() { new LogItemProperty("ServiceName", ConstantHelper.JobLog), new LogItemProperty("ActionName", "SendMailAction"), new LogItemProperty("FormData", new { sendDataItem, recipientList }) }, LogLevel = LogLevel.Error, Exception = ex }); } var saveDataItem = await InsertSendDataItem(sendDataItem); }; //herkes icin tek template kullan if (useDetailForEveryoneDataValue) { sendMailAction(recipients); } else { recipients.AsParallel().ForAll(recipient => { sendMailAction(new List <string>() { recipient }); }); } stopwatch.Stop(); LoggerService.GetLogger(ConstantHelper.JobLog).Log(new LogItem() { LoggerName = ConstantHelper.JobLog, Title = "SendDataBy Executed", Message = "SendDataBy Executed", LogItemProperties = new List <LogItemProperty>() { new LogItemProperty("ServiceName", ConstantHelper.JobLog), new LogItemProperty("ActionName", "SendDataBy"), new LogItemProperty("ElapsedTimeAssn", stopwatch.Elapsed.TotalSeconds), }, LogLevel = LogLevel.Trace }); #endregion }