У меня есть дата.Я хочу отправить содержимое таблицы данных в формате Excel и отправить электронное письмо в виде вложения.Я попробовал приведенный ниже код, но он отправляет файл expty excel.
Сначала я преобразовываю данные в потоковый объект и передаю поток методу sendemail с другими параметрами почты.
private static Stream DataTableToStream(System.Data.DataTable table)
{
const string semiColon = ";";
var ms = new MemoryStream();
var sw = new StreamWriter(ms);
foreach (DataColumn column in table.Columns)
{
sw.Write(column.ColumnName);
sw.Write(semiColon);
}
sw.Write(Environment.NewLine);
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
sw.Write(row[i].ToString().Replace(semiColon, string.Empty));
sw.Write(semiColon);
}
sw.Write(Environment.NewLine);
}
return ms;
}
нижекод sendmail
private const string ExcelContentType = "application/ms-excel";
private static bool SendMail(MailAddress from, string to, string[] CCAddress, String strSubject, String strBody, Attachment attachment, Stream tableStream)
{
try
{
const string attchmentName = "Weekly Vendor Report.xlsx";
SmtpClient client = new SmtpClient();
client.Host = "mail.lamrc.com";
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
message.From = from;
message.IsBodyHtml = true;
message.Subject = strSubject;
message.Body = strBody;
message.To.Add(to);
message.Attachments.Add(new Attachment(tableStream, attchmentName, ExcelContentType));
.......
}