2012-07-12 53 views
0

我正在.NET 3.5,Visual Studio 2010中工作。我正在研究一個將某些電子郵件保存到文件夾的Outlook加載項。我已經使用Microsoft.Office.Interop.Outlook.MailItem.SaveAs函數得到它的工作。但是,文件屬性只有當前時間(通過加載項導出文件的時間),因爲它們的「修改日期/創建日期等」以及其他屬性(如「到」,「從」,「抄送」,「密件抄送」)都不存在。在C#中修改除日期以外的文件屬性

如果您在Windows資源管理器(我正在使用Windows 7)中打開文件夾,請轉到名稱,修改日期,類型等的頂部,您可以單擊更多,然後查看其他各種列可能與「專輯藝術家」,「收件人」,「發件人」等有關。

C#有一個非常簡單的方法來修改時間,File.SetCreationTime(filename, DateTime object);。但是,沒有.SetTo或.SetAlbumArtist或類似的東西。我將如何去修改這些屬性?

更新1:通過研究,我發現這個鏈接:Read/Write 'Extended' file properties (C#),以便可能包含答案...但我不知道如何。接受的答案提到了在使用.dll的shell上運行方法。第二個答案包含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); 
} 

此代碼成功地抓住選定的電子郵件(S)和將它們保存在文件名。但是,當您打開.msg時,email.To =「我填入To」會更改信息,但不會更改文件屬性。

+0

之前有沒有File.Tag像有一個File.SetCreationTime()。 ..你的意思是我應該能夠訪問它嗎? – Jake 2012-07-12 18:02:25

+0

這裏是一個鏈接,你可以看看..但你將不得不將代碼轉換爲C#或者你可以使用VB.NET代碼,只需使用Microsoft.VisualBasic http://p2p.wrox放入你的頭文件。 com/excel-vba/35766-file-information.html – MethodMan 2012-07-12 18:05:08

回答

1

這是無法更改的,因爲它實際上不是文件系統中的任何文件屬性(如文件創建或修改日期時間)。

您正在討論的Windows資源管理器中的列是「虛擬」的,它們「僅」是Windows資源管理器的功能。它「理解」某些文件類型的內容,並且可以處理如此顯示和排序的列。

如果你想改變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(); 
+0

好的,有趣的。工作流程也應該是打開文件,在頂部添加一個名爲「To」的標題,使用該信息填充它,然後保存該文件? – Jake 2012-07-12 18:11:04

+0

我不知道MS Outlook保存電子郵件的確切格式。但是,如果您可以在記事本中打開它並在電子郵件的主要內容之前看到以To,From或Subject開頭的行,則可以更改這些行。我認爲,在Outlook中重新打開文件時,在所有內容之前放入行都會導致問題。 – 2012-07-12 18:20:14

+0

是的,添加標頭不起作用。我還在這裏找到了一些有趣的信息:http://stackoverflow.com/questions/5337683/how-to-set-extended-file-properties,這表明我使用.dll文件作爲Office文檔,但標準格式從Outlook(.msg)不被視爲Outlook文檔,因此它不適用於我的目的。 – Jake 2012-07-12 18:30:45