0

私は .NET 3.5、Visual Studio 2010 で作業しています。電子メールをフォルダーに保存する Outlook アドインを使用しています。Microsoft.Office.Interop.Outlook.MailItem.SaveAs関数を使用して動作するようにしました。ただし、ファイルのプロパティには、変更日/作成日などとして現在の時刻 (ファイルがアドインを介してエクスポートされた時刻) のみがあり、To、From、CC、BCC などの他のプロパティはありません。

Windows エクスプローラー (私は Windows 7 を使用しています) でフォルダーを開くと、名前、変更日、タイプなどの上部に移動し、[その他] をクリックして、関連する可能性のある他のさまざまな列を表示できます。 「アルバムアーティスト」「To」「From」など

C# には、タイミングを変更する非常に簡単な方法がありFile.SetCreationTime(filename, DateTime object);ます。ただし、.SetTo や .SetAlbumArtist などはありません。これらのプロパティを変更するにはどうすればよいですか?

更新 1:調査の結果、次のリンクが見つかりました: Read/Write 'Extended' file properties (C#)、答えが含まれている可能性があります...しかし、方法がわかりません。受け入れられた回答では、.dll を使用してシェルでメソッドを実行することが言及されています。2番目の回答にはC#コードが含まれており、コメント投稿者は基本的に知りたいこと(特定のファイルのプロパティを変更する方法)を尋ね、次のコメント投稿者は「これらを設定することはできません」と答えました...だから私はまだスクエア1です。

更新 2:次のことも試しました。

foreach (Object selectedObject in explorer.Selection)
{
     Outlook.MailItem email = (selectedObject as Outlook.MailItem);
     //Modify the information about the email
     email.To = "I filled in To";
     email.SaveAs(filename, OlSaveAsType.olMSG);
}

このコードは、選択した電子メールを正常に取得し、ファイル名で保存します。ただし、email.To = "To を入力しました" は、.msg を開いたときに情報を変更しますが、ファイルのプロパティは変更しません。

4

1 に答える 1

1

これは、実際にはファイル システムの観点からはファイル プロパティではないため (ファイルの作成日時や変更日時など)、変更することはできません。

あなたが話しているWindows Explorerの列は「仮想」であり、Windows Explorerの「唯一の」機能です。いくつかのファイルタイプのコンテンツを「理解」し、そのような列の表示と並べ替えを処理できます。

To、From などを変更したい場合は、保存するファイルの内容を変更する必要があります。つまり、メッセージの To または From を変更します。

これを行うには、Microsoft.Office.Interop.Outlook.MailItem オブジェクト (保存したばかり) がある場合は、ファイルに保存する前に、そのオブジェクトに必要なプロパティを設定します。つまり、次のようになります。

MailItem mail = ...;
mail.To = "some new to";
mail.Subject = "new subject";
mail.SaveAs(fileToSave, OlSaveAsType.OlMSG);

Outlook に保存されている電子メールも変更されるかどうかはわかりません。変更される場合は、プロパティを変更する前に電子メールのコピーを作成してください。

MailItem copyOfMailToSave = (MailItem)mail.Copy();
于 2012-07-12T18:09:10.747 に答える