MemoryStreamからの電子メールの添付ファイルは空になります
-
02-10-2019 - |
質問
_Dataは、添付ファイルデータの配列です。
私がこれをしているとき:
var ms = new MemoryStream(_data.Length);
ms.Write(_data,0,_data.Length);
mailMessage.Attachments.Add(new Attachment(ms, attachment.Name));
添付ファイルが空になります。実際には、OutlookにFilesizeが表示されますが、間違っています。
まあ、私は私の_dataに問題があると思いました。それから私はこのアプローチを試すことにしました:
var ms = new MemoryStream(_data.Length);
ms.Write(_data,0,_data.Length);
fs = new FileStream(@"c:\Temp\"+attachment.Name,FileMode.CreateNew);
fs.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
fs.Flush();
fs.Close();
mailMessage.Attachments.Add(new Attachment(@"c:\Temp\" + attachment.Name));
そしてそれはうまくいきます。最初のものの何が問題になっていますか?
解決
最初のフォームでは、ストリームを「巻き戻す」ことではありません。
ms.Position = 0;
それで、それはから読もうとしていました 終わり データがなかったストリームの。
ただし、MemoryStreamを作成する簡単な方法は、コンストラクターだけを使用することです。
var ms = new MemoryStream(_data);
mailMessage.Attachments.Add(new Attachment(ms, attachment.Name));
他のヒント
GetBufferを使用しないでください。使用する ms.ToArray().
所属していません StackOverflow