private void SendEmail(object obj) { lock (synclock) { var usersToSend = new Settings_statistic().GetAllItems().Tables[0].Rows; List <string> mails = new List <string>(); foreach (DataRow row in usersToSend) { if (!mails.Contains(row.ItemArray[2].ToString())) { mails.Add(row.ItemArray[2].ToString()); } } foreach (String mail in mails) { List <int> UserIDs = new List <int>(); foreach (DataRow row in usersToSend) { if (row.ItemArray[2].ToString() == mail) { UserIDs.Add(Convert.ToInt32(row.ItemArray[1].ToString())); } } SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com", 587); smtp.EnableSsl = true; smtp.Credentials = new System.Net.NetworkCredential("*****@*****.**", "2351001057001n"); // наш email с заголовком письма MailAddress from = new MailAddress("*****@*****.**", "Статистика"); // кому отправляем MailAddress to = new MailAddress(mail); // создаем объект сообщения MailMessage m = new MailMessage(from, to); // тема письма m.Subject = "Статистика по заявкам кабинетов"; Ticket_statistic statistic = new Ticket_statistic(); DataTable tickets = statistic.GetAllItems().Tables[0]; if (tickets.Rows.Count != 0) { string s = "ChangeDate >= '" + DateTime.Now.AddDays(-7) + "'" + "AND UserID IN (" + string.Join(",", UserIDs) + ")"; var rows = tickets.Select("ChangeDate >= '" + DateTime.Now.AddDays(-7) + "'" + "AND UserID IN (" + string.Join(",", UserIDs) + ")"); if (rows.Count() != 0) { MemoryStream xlsStream = new XLSWrite().GetXLSStreamStatistic(rows.CopyToDataTable()); m.Attachments.Add(new Attachment(xlsStream, "статистика для кабинетов.xlsx")); smtp.Send(m); } } } } }
protected void btnDownload_Click(object sender, EventArgs e) { if (allStatsTable.Rows.Count != 0) { List <string> queries = new List <string>(); DateTime dateFrom; DateTime dateTo; if (DateTime.TryParse(stbDeliveryDate1.Text, out dateFrom)) { queries.Add("ChangeDate >= '" + dateFrom + "'"); } if (DateTime.TryParse(stbDeliveryDate2.Text, out dateTo)) { queries.Add("ChangeDate <= '" + dateTo + "'"); } if (!string.IsNullOrEmpty(stbUID.Text)) { queries.Add("UserID IN(" + stbUID.Text + ")"); } var rows = allStatsTable.Select(string.Join(" AND ", queries)); if (rows.Count() != 0) { MemoryStream xlsStream = new XLSWrite().GetXLSStreamStatistic(rows.CopyToDataTable()); xlsStream.CopyTo(Response.OutputStream); Response.ContentType = "Application/OCTET-STREAM"; Response.AppendHeader("Content-Disposition", "attachment; filename=статистика по заявкам.xlsx"); Response.End(); } } }