2012-01-19 21 views
5

これは私が現在テーブルを作成して電子メールで送信する方法です。私がしたいのは、テーブルを作成してメールでテキストとして送信することです。私はcsvファイルを作成してこのメ​​ールに添付して送信したいと考えています。誰かが私にこのことがどうやってできるかを教えてもらえますか?ありがとう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\"}"; } 
    } 
+0

あなたはすでにCSVファイルを持っていますか、SQLデータから、それを生成したいのですか? –

+0

私はSQLデータから新しいものを作成したい – Beginner

+1

あなたにコードを書くようにお願いしていますか?それはこのサイトの目的ではありません。そのコードを書くときに何らかの問題が発生した場合は、そのことについて質問する必要があります。 – svick

答えて

14

CSVファイルを生成したら、それをストリームに書き込む必要があります。その後、次のコードで添付ファイルを追加することができますSystem.Net.Mail.Attachmentクラスの

//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\"}"; 
    } 
} 

リファレンス

+1

@Beginner申し訳ありません、自分のコードを修正しました - CSVのバイトでメモリストリームを初期化してください –

+1

'{Name =" data.csv "}のコードのように、Attachmentオブジェクトのnameプロパティを初期化してみてください。 –

+1

私のコードを正しく使用していますか? CSVファイル –

0

あなたは、あなたがあなたのMailMessageに添付ファイルを追加することができ、一時ファイル(CSVファイル)を作成する最初になります。

は、一時ファイルを作成するには、以下のリンクで見ることができます:
How to create a temporary file (for writing to) in C#?
Creating temporary folders

+0

なぜ一時ファイルを最初に作成することをお勧めしますか?私にとっては、複雑になり、間違ってしまうことがあるだけです。ストリームから直接行う方が良いようです。しかし、私はこれが利点である場合の質問としてこれを求めています。 – Carl

+1

同じプロセスでread(csv)とsend(mail)を実行している場合、ストリームは確かに良い解決策です。また、この質問は解答以来編集されていることにも注意してください。 –

+0

Ah。私はその質問が編集されたことを知らなかった。 – Carl

関連する問題