1

C# でファイルに「オブジェクト」を書き込む必要がありますが、これまでの試みはすべてうまくいきませんでした。問題は、実際に書きたいオブジェクトが、Outlook 電子メールのオブジェクトのコレクションobjectから返されるタイプのものであることです。AttachmentsMailItem

私はすでにそれをSQL Serverデータベースに挿入し、そこから正しいファイルを取得して正常に作成することができましたが、これが唯一の方法ではありません.

以下に示すようにも使用BinaryFormatterしてみましたが、最初に不要な文字が追加されるため、常にファイル ヘッダーが破損します (残りのデータは問題ないようです)。

[...]
using ( FileStream fileStream = new FileStream( tempName, FileMode.Create ) )
{
    using ( BinaryWriter binaryWriter = new BinaryWriter( fileStream ) )
    {
        using ( MemoryStream memoryStream = new MemoryStream() )
        {
            object attachmentData =                                     
                attachment.PropertyAccessor.GetProperty( PR_ATTACH_DATA_BIN );
            BinaryFormatter binaryFormatter = 
                new BinaryFormatter();
            binaryFormatter.Serialize( memoryStream, attachmentData );
            memoryStream.Seek( 0, SeekOrigin.Begin );
            binaryWriter.Write( memoryStream.ToArray() );
        }
    }
}
[...]

何か案は?Outlook から取得したものを制御できないため、通常のシリアル化のアプローチは、ここで必要なものではないようです...

4

1 に答える 1

5

これがあなたが探しているものだと思います:

方法: Outlook から添付ファイルを保存する

if (newEmail.Attachments.Count > 0)
{
      for (int i = 1; i <= newEmail.Attachments.Count; i++)
      {
           newEmail.Attachments[i].SaveAsFile
                (@"C:\TestFileSave\" +
                newEmail.Attachments[i].FileName);
      }
}
于 2012-07-09T08:10:56.930 に答える