此刻,我正在努力將System.Net.Mail.MailMessage
對象轉換爲Microsoft.Office.Interop.Outlook.MailItem
之一。 一切似乎工作正常,但我需要幫助通過PropertyAccessor.SetProperty()
方法設置SentOn
MailItem屬性。使用PropertyAccessor.SetProperty方法發送Outlook MailItem屬性時發生的問題
我讀取MailMessage頭內的發送日期信息,返回一個字符串對象,然後將其轉換爲DateTime,最後使用SetProperty()方法保存此信息。
這裏是我的代碼:
MailMessage mMessage= MailMessageMimeParser.ParseMessage(emlFilePath);
eMail = (Outlook.MailItem)application.CreateItem(Outlook.OlItemType.olMailItem);
// here I set 'Subject', 'To', 'CC', 'BCC' etc. properties...
// then try to set the 'SentOn' property
string sentOnString = mMessage.Headers["Date"]; // Wed, 27 May 2015 10:54:39 +0200
DateTime sentOnDateTime = DateTime.SpecifyKind(DateTime.Parse(sentOnString), DateTimeKind.Local); // 5/27/2015 10:54:39 AM
string PR_CLIENT_SUBMIT_TIME = "http://schemas.microsoft.com/mapi/proptag/0x00390040";
eMail.PropertyAccessor.SetProperty(PR_CLIENT_SUBMIT_TIME, sentOnDateTime);
eMail.Save(); // here the SentOn property is 5/27/2017 12:54:39 PM
DateTime date = (DateTime)eMail.PropertyAccessor.GetProperty(PR_CLIENT_SUBMIT_TIME); // 5/27/2015 10:54:39 AM
...
return eMail; // here the SentOn property is 5/27/2017 12:54:39 PM
由於我的代碼中的註釋表明,右/好日期值(2015年5月27日上午10時54分39秒)似乎要存儲的電子郵件項目裏面的時候我用PropertyAccessor.GetProperty()
方法得到它,但是如果我試圖從eMail.SentOn
屬性中獲得它,那麼我得到錯誤的日期值(2017/5/27 12:54:39)。
我也嘗試使用此說明創建sentOnDateTime
DateTime DateTime sentOnDateTime = DateTime.Parse("Wed, 27 May 2015 10:54:39");
但結果不變。
你有什麼建議?任何提示?謝謝。
聽起來像一個UTC問題什麼的。這些'DateTime'值的'Kind'是什麼?也許你需要使用'ToLocalTime()'或'ToUniversalTime'? –
當我創建'sentOnDateTime'時,我指定了'DateTimeKind.Local'值。我也試過'DateTimeKind.Unspecified'值,但問題仍然存在。 – baru