public int tblSendRegisterDetail_insert(SendRegisterDetailDTO dt) { string sql = "INSERT INTO tblSendRegisterDetail(SendRegisterId, Email, StartDate, EndDate, DayEnd, HoursEnd, MinuteEnd, SecondEnd, Status, ErrorType, MailSend,CustomerName) " + "VALUES(@SendRegisterId, @Email, @StartDate, @EndDate, @DayEnd, @HoursEnd, @MinuteEnd, @SecondEnd, @Status, @ErrorType, @MailSend, @CustomerName) SELECT SCOPE_IDENTITY()"; SqlCommand cmd = new SqlCommand(sql, ConnectionData._MyConnection); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@SendRegisterId", SqlDbType.Int).Value = dt.SendRegisterId; cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = dt.Email; cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = dt.StartDate; cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = dt.EndDate; cmd.Parameters.Add("@DayEnd", SqlDbType.Int).Value = dt.DayEnd; cmd.Parameters.Add("@HoursEnd", SqlDbType.Int).Value = dt.HoursEnd; cmd.Parameters.Add("@MinuteEnd", SqlDbType.Int).Value = dt.MinuteEnd; cmd.Parameters.Add("@SecondEnd", SqlDbType.Int).Value = dt.SecondEnd; cmd.Parameters.Add("@Status", SqlDbType.Bit).Value = dt.Status; cmd.Parameters.Add("@ErrorType", SqlDbType.VarChar).Value = dt.ErrorType; cmd.Parameters.Add("@MailSend", SqlDbType.NVarChar).Value = dt.MailSend; cmd.Parameters.Add("@CustomerName", SqlDbType.NVarChar).Value = dt.CustomerName; var sendID = cmd.ExecuteScalar(); cmd.Dispose(); return int.Parse(sendID.ToString()); }
// Thêm ngày 16/09 by Viết Hùng //Thêm ngày 26/9 public void callSendBulkMail_BySubGroup(DataRow Row, DataTable listSendContent, DataTable listCustomer, DataTable listMailConfig) { //param for send mail string EmailTo = ""; string customerName = ""; string EmailSubject = ""; string EmailBody = ""; string EmailFrom = ""; string Name = ""; string username = ""; string Password = ""; string HostName = ""; int PortNumber = 0; bool isSSL = false; //param for content int SendContentId; int EmailFromID; int SendRegisterID = 0; int AccountId = 0; SendRegisterBUS srBus = new SendRegisterBUS(); CustomerBUS customerBus = new CustomerBUS(); SendRegisterDetailBUS srdBus = new SendRegisterDetailBUS(); dgBUS = new DetailGroupBUS(); PartSendBUS psBus = new PartSendBUS(); SendContentBUS scBus = new SendContentBUS(); try { if (Row != null) { // Stop timer check SendContentId = int.Parse(Row["SendContentId"].ToString()); AccountId = int.Parse(Row["AccountId"].ToString()); // Lấy nội dung đăng ký gửi đi DataRow[] resultListSendContend = listSendContent.Select(String.Format("Id = {0}", SendContentId)); if (resultListSendContend.Length > 0) { EmailSubject = resultListSendContend[0]["Subject"].ToString(); EmailBody = resultListSendContend[0]["Body"].ToString(); } //Lấy cấu hình mail gửi EmailFromID = int.Parse(Row["MailConfigID"].ToString()); DataRow[] resultListMailConfig = listMailConfig.Select(String.Format("Id = {0}", EmailFromID)); if (resultListMailConfig.Length > 0) { EmailFrom = resultListMailConfig[0]["Email"].ToString(); username = resultListMailConfig[0]["username"].ToString(); Password = resultListMailConfig[0]["Password"].ToString(); HostName = resultListMailConfig[0]["Server"].ToString(); Name = resultListMailConfig[0]["Name"].ToString(); PortNumber = int.Parse(resultListMailConfig[0]["Port"].ToString()); isSSL = bool.Parse(resultListMailConfig[0]["isSSL"].ToString()); } // ID nhóm mail cần gửi đi string groupId = Row["SendType"].ToString(); //Lấy danh sách khách hàng của nhóm DataTable tblCustomerBySubGroup = dgBUS.GetByID(int.Parse(groupId)); if (tblCustomerBySubGroup.Rows.Count > 0) { // Kiểm tra chiến dịch này có thuộc nhóm gửi mail từng phần DataTable tblPartSend = psBus.GetByUserIdAndGroupId(AccountId, int.Parse(groupId)); SendRegisterID = int.Parse(Row["Id"].ToString()); for (int i = 0; i < tblCustomerBySubGroup.Rows.Count; i++) { Stop = true; DataTable tblCustomerByID = customerBus.GetByID(int.Parse(tblCustomerBySubGroup.Rows[i]["CustomerID"].ToString())); if (tblCustomerByID.Rows.Count > 0) { EmailTo = tblCustomerByID.Rows[0]["Email"].ToString(); customerName = (tblCustomerByID.Rows[0]["Name"].ToString() == null || tblCustomerByID.Rows[0]["Name"].ToString() == "") ? EmailTo : tblCustomerByID.Rows[0]["Name"].ToString(); } // Xử lý câu chào cho nội dung mail string body = EmailBody.Replace("[khachhang]", customerName); body = body.Replace("[email]", EmailTo); // Xử lý câu chào cho tiêu đề mail string subject = EmailSubject.Replace("[khachhang]", customerName).ToUpper(); // Thời gian bắt đầu gửi DateTime startDate = DateTime.Now; // Thời gian kết thúc gửi DateTime endDate = DateTime.Now; SendRegisterDetailDTO srdDto = new SendRegisterDetailDTO() { SendRegisterId = SendRegisterID, Email = EmailTo, StartDate = startDate, EndDate = endDate, DayEnd = endDate.Day, HoursEnd = endDate.Hour, MinuteEnd = endDate.Minute, SecondEnd = endDate.Second, MailSend = EmailFrom, Status = false, ErrorType = "0" }; int sendetailID = 0; // Lưu lại thông tin từng mail đã gửi sendetailID = srdBus.tblSendRegisterDetail_insert(srdDto); srdDto.SendRegisterDetailId = sendetailID; body += String.Format("<IMG height=1 src=\"http://fastautomaticmail.com/emailtrack.aspx?emailsentID={0}\" width=1>", sendetailID); //Update thời gian bắt đầu gửi startDate = DateTime.Now; srdDto.StartDate = DateTime.Now; bool send = false; try { //=============================================================================== // Edit by HThanhHai for part send mail //=============================================================================== // Nếu nhóm này nằm trong danh sách gửi từng phần if (tblPartSend.Rows.Count > 0) { // Kiểm tra số lượng mail khách hàng này đã nhận được int countReceivedMail = int.Parse(tblCustomerBySubGroup.Rows[i]["countReceivedMail"].ToString()); // Nội dung mail đã gửi cho nhóm này string hasContentSend = tblPartSend.Rows[0]["hasContentSend"].ToString(); string[] arrayContent = hasContentSend.Split(','); if (arrayContent.Length > 0) { // Nếu số lượng mail khách hàng này nhận ít hơn số nội dung đã gửi đi if (countReceivedMail < arrayContent.Length) { // Duyệt qua những nội dung mà khách hàng này chưa nhận // for (int k = countReceivedMail; k < arrayContent.Length; k++) { string contentId = arrayContent[k]; string contentDetail, subjectDetail; DataTable tblContent = scBus.GetByID(int.Parse(contentId)); if (tblContent.Rows.Count > 0) { subjectDetail = tblContent.Rows[0]["Subject"].ToString(); contentDetail = tblContent.Rows[0]["Body"].ToString(); contentDetail = contentDetail.Replace("[khachhang]", customerName); contentDetail = contentDetail.Replace("[email]", EmailTo); // Xử lý câu chào cho tiêu đề mail subjectDetail = subjectDetail.Replace("[khachhang]", customerName).ToUpper(); } else { subjectDetail = "No subject"; contentDetail = "Nội dung không tồn tại !"; } if (HostName == "Amazon API") { send = SendEmailWithAmazone(EmailFrom, EmailTo, subjectDetail, contentDetail, username, Password, Name); } else { send = SendMail(subjectDetail, contentDetail, HostName, PortNumber, EmailFrom, Password, Name, EmailTo, username, isSSL); } } // Update số lượng mail đã nhận sau khi đã gửi đi đầy đủ DetailGroupDTO dgDto = new DetailGroupDTO(); dgDto.CustomerID = AccountId; dgDto.GroupID = int.Parse(groupId); dgDto.CountReceivedMail = arrayContent.Length; dgBUS.tblDetailGroup_Update(dgDto); } } } else { // Không phải chiến dịch gửi mail từng phần if (HostName == "Amazon API") { send = SendEmailWithAmazone(EmailFrom, EmailTo, subject, body, username, Password, Name); } else { send = SendMail(subject, body, HostName, PortNumber, EmailFrom, Password, Name, EmailTo, username, isSSL); } } } catch (Exception ex) { const string errSubject = "Error from FAMail"; string errBody = ex.Message + DateTime.Now; ; const string errHost = "smtp.gmail.com"; const string errUser = "******"; const string errPass = "******"; SendMail(errSubject, errBody, errHost, 587, errUser, errPass, "Error from FAMail", "*****@*****.**"); SendMail(errSubject, errBody, errHost, 587, errUser, errPass, "Error from FAMail", "*****@*****.**"); } //Update thời gian bắt kết thúc srdDto.EndDate = endDate; endDate = DateTime.Now; srdBus.tblSendRegisterDetail_Update(sendetailID, startDate, endDate, send); } } } else { return; } } catch (Exception ) { throw; } finally { // cập nhật trạng thái đã gửi mail & thời gian kết thúc cho chiến dịch gửi mail này // trạng thái 1 - đã gửi, 0 - chưa gửi srBus.tblSendRegister_UpdateStatus(SendRegisterID, 1, DateTime.Now); Stop = false; } }
public void SendBulkMail(DataTable listSendRegister, DataTable listSendContent, DataTable listCustomer, DataTable listMailConfig) { //param for send mail string EmailTo = ""; string customerName = ""; string EmailSubject = ""; string EmailBody = ""; string EmailFrom = ""; string Name = ""; string Password = ""; string HostName = ""; int PortNumber = 0; //param for content int SendContentId; int EmailFromID; int SendRegisterID; SendRegisterBUS srBus = new SendRegisterBUS(); CustomerBUS customerBus = new CustomerBUS(); SendRegisterDetailBUS srdBus = new SendRegisterDetailBUS(); //Kiểm tra và duyệt if (listSendRegister.Rows.Count > 0) { DataRow Row = null; DateTime currentDate = DateTime.Now; for (int i = 0; i < listSendRegister.Rows.Count; i++) { DataRow rowTemp = listSendRegister.Rows[i]; DateTime dateItem = DateTime.Parse(rowTemp["StartDate"].ToString()); if (currentDate.Year == dateItem.Year && currentDate.Month == dateItem.Month && currentDate.Day == dateItem.Day && currentDate.Hour == dateItem.Hour && currentDate.Minute == dateItem.Minute) { Row = rowTemp; break; } } if (Row != null) { //stop timer check SendContentId = int.Parse(Row["SendContentId"].ToString()); DataRow[] resultListSendContend = listSendContent.Select(String.Format("Id = {0}", SendContentId)); if (resultListSendContend.Length > 0) { EmailSubject = resultListSendContend[0]["Subject"].ToString(); EmailBody = resultListSendContend[0]["Body"].ToString(); } //Lấy cấu hình mail gửi EmailFromID = int.Parse(Row["MailConfigID"].ToString()); DataRow[] resultListMailConfig = listMailConfig.Select(String.Format("Id = {0}", EmailFromID)); if (resultListMailConfig.Length > 0) { EmailFrom = resultListMailConfig[0]["Email"].ToString(); Password = resultListMailConfig[0]["Password"].ToString(); HostName = resultListMailConfig[0]["Server"].ToString(); Name = resultListMailConfig[0]["Name"].ToString(); PortNumber = int.Parse(resultListMailConfig[0]["Port"].ToString()); } //lấy danh sách mail cần gửi đi string groupId = Row["SendType"].ToString(); DataTable tblCustomerByGroup = customerBus.GetByID(int.Parse(groupId)); if (tblCustomerByGroup.Rows.Count > 0) { SendRegisterID = int.Parse(Row["Id"].ToString()); for (int i = 0; i < tblCustomerByGroup.Rows.Count; i++) { EmailTo = tblCustomerByGroup.Rows[i]["Email"].ToString(); customerName = tblCustomerByGroup.Rows[i]["Name"].ToString(); DateTime startDate = DateTime.Now; bool send = SendMail(EmailSubject, EmailBody, HostName, PortNumber, EmailFrom, Password, Name, EmailTo); DateTime endDate = DateTime.Now; SendRegisterDetailDTO srdDto = new SendRegisterDetailDTO(); srdDto.SendRegisterId = SendRegisterID; srdDto.Email = EmailTo; srdDto.StartDate = startDate; srdDto.EndDate = endDate; srdDto.DayEnd = endDate.Day; srdDto.HoursEnd = endDate.Hour; srdDto.MinuteEnd = endDate.Minute; srdDto.SecondEnd = endDate.Second; srdDto.MailSend = EmailFrom; if (send == true) { srdDto.Status = true; } else { srdDto.Status = false; } ConnectionData.OpenMyConnection(); //lưu lại thông tin từng mail đã gửi srdBus.tblSendRegisterDetail_insert(srdDto); ConnectionData.CloseMyConnection(); } // cập nhật trạng thái đã gửi mail & thời gian kết thúc cho chiến dịch gửi mail này // trạng thái 1 - đã gửi, 0 - chưa gửi srBus.tblSendRegister_UpdateStatus(SendRegisterID, 1, DateTime.Now); } } else return; } else return; }
public int tblSendRegisterDetail_insert(SendRegisterDetailDTO dt) { try { string sql = "INSERT INTO tblSendRegisterDetail(SendRegisterId, Email, StartDate, EndDate, DayEnd, HoursEnd, MinuteEnd, SecondEnd, Status, ErrorType, MailSend,CustomerName) " + "VALUES(@SendRegisterId, @Email, @StartDate, @EndDate, @DayEnd, @HoursEnd, @MinuteEnd, @SecondEnd, @Status, @ErrorType, @MailSend, @CustomerName) SELECT SCOPE_IDENTITY()"; SqlCommand cmd = new SqlCommand(sql, ConnectionData._MyConnection); cmd.CommandType = CommandType.Text; cmd.Parameters.Add("@SendRegisterId", SqlDbType.Int).Value = dt.SendRegisterId; cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = dt.Email; cmd.Parameters.Add("@StartDate", SqlDbType.DateTime).Value = dt.StartDate; cmd.Parameters.Add("@EndDate", SqlDbType.DateTime).Value = dt.EndDate; cmd.Parameters.Add("@DayEnd", SqlDbType.Int).Value = dt.DayEnd; cmd.Parameters.Add("@HoursEnd", SqlDbType.Int).Value = dt.HoursEnd; cmd.Parameters.Add("@MinuteEnd", SqlDbType.Int).Value = dt.MinuteEnd; cmd.Parameters.Add("@SecondEnd", SqlDbType.Int).Value = dt.SecondEnd; cmd.Parameters.Add("@Status", SqlDbType.Bit).Value = dt.Status; cmd.Parameters.Add("@ErrorType", SqlDbType.VarChar).Value = dt.ErrorType; cmd.Parameters.Add("@MailSend", SqlDbType.NVarChar).Value = dt.MailSend; cmd.Parameters.Add("@CustomerName", SqlDbType.NVarChar).Value = dt.CustomerName; if (ConnectionData._MyConnection.State == ConnectionState.Closed) { ConnectionData._MyConnection.Open(); } cmd.ExecuteNonQuery(); return 1; } catch (Exception) { return 1; } }
public int tblSendRegisterDetail_insert(SendRegisterDetailDTO dt) { return srdDao.tblSendRegisterDetail_insert(dt); }
/** * Lưu lại thông tin chi tiết của mail đã gửi. * Param: sendRegisterId, mailTo, mailFrom, name, status. **/ private void logHistoryForSend(int sendRegisterId, string mailTo, string mailFrom, string name, bool status) { try { SendRegisterDetailDTO srdDto = new SendRegisterDetailDTO(); srdDto.SendRegisterId = sendRegisterId; srdDto.Email = mailTo; srdDto.StartDate = DateTime.Now; srdDto.EndDate = DateTime.Now; srdDto.DayEnd = DateTime.Now.Day; srdDto.HoursEnd = DateTime.Now.Hour; srdDto.MinuteEnd = DateTime.Now.Minute; srdDto.SecondEnd = DateTime.Now.Second; srdDto.MailSend = mailFrom; srdDto.CustomerName = name; srdDto.ErrorType = ""; srdDto.Status = status; sendDetailBUS.tblSendRegisterDetail_insert(srdDto); } catch (Exception) { } }