質問

_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().

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top