Как создать CSV и прикрепить к электронной почте и отправить в C # - PullRequest
9 голосов
/ 19 января 2012

Вот как я сейчас создаю таблицу и отправляю ее по электронной почте. То, что я хотел бы сделать, это вместо создания таблицы и отправки ее в виде текста в электронном письме, я хотел бы создать CSV-файл и прикрепить его к этому письму, а затем отправить это. Может кто-нибудь, пожалуйста, помогите показать мне, как это можно сделать? спасибо

using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(csv)))
    {
        try
        {
            string to = "";
            string from = "";
            string subject = "Order";
            string body = sb.ToString();
            SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
            MailMessage mailObj = new MailMessage(from, to, subject, body); 
            mailObj.Attachments.Add(new Attachment(stream, new ContentType("text/csv")));
            mailObj.IsBodyHtml = true;
            SMTPServer.Send(mailObj);
        }
        catch (Exception ex)
        { return "{\"Error\":\"Not Sent\"}"; }
    }

Ответы [ 2 ]

18 голосов
/ 19 января 2012

После того, как вы сгенерировали файл CSV, вам нужно записать его в поток. Затем вы можете добавить вложение со следующим кодом:

//Stream containing your CSV (convert it into bytes, using the encoding of your choice)
using (MemoryStream stream = new MemoryStream(Encoding.ASCII.GetBytes(csv)))
{
  //Add a new attachment to the E-mail message, using the correct MIME type
  Attachment attachment = new Attachment(stream, new ContentType("text/csv"));
  attachment.Name = "test.csv";
  mailObj.Attachments.Add(attachment);

  //Send your message
  try
  {
    using(SmtpClient client = new SmtpClient([host]){Credentials = [credentials]})
    {
      client.Send(mailObj);
    }
  }
  catch
  {
    return "{\"Error\":\"Not Sent\"}";
  }
}

Ссылка для System.Net.Mail.Attachment класс

0 голосов
/ 19 января 2012

Сначала вы должны создать временный файл (файл CSV), затем вы можете добавить вложение к вашему MailMessage.Чтобы создать временный файл, вы можете посмотреть по этим ссылкам: Как создать временный файл (для записи) в C #? Создание временных папок

...