2014-12-03 45 views
0

我已經Outlook加載,其中在發送之前分配一個UserProperty到的MailItem:標籤的Outlook的MailItem ID號之前發送,而不會引起TNEF(RTF)發送

Outlook.UserProperty prop = mail.UserProperties.Add("XXXX", Outlook.OlUserPropertyType.olText); 
prop.Value = "YYYY"; 

已知(見Stop Outlook from converting HTML to RTF例如),這樣做會導致電子郵件被髮送使用TNEF(即RTF格式,令人畏懼的winmail.dat)。

我的問題是,簡單地取消設置TNEF屬性是否安全?下面的代碼將做到這一點:

mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/id/{00062008-0000-0000-C000-000000000046}/8582000B", false); 

這裏的問題是,我必須這樣做對ItemSend - 我不能做直後,我設置的屬性,因爲它總是false反正在這一點上。當我點擊發送時,它只會變成true

我不介意取消設置TNEF屬性意味着該屬性不會與電子郵件一起發送。我更擔心的是,在其他情況下可能會出現TNEF實際需要的情況,並且此代碼會破壞它們。

或者,還有一種更好的方式,在發送之前用一個自定義ID號碼「標記」一封電子郵件嗎?

回答

2

不要使用UserProperties集合來標記消息 - 它會使用用戶屬性的定義和存儲用戶prop值的命名屬性來更新blob。 如果使用MailItem.PropertyAccessor.SetProperty設置後者而不設置前者,Outlook將不會強制使用TNEF格式。

除非以RTF格式發送,否則將UseTnef屬性設置爲false是安全的 - 檢查該屬性是否設置爲true,然後將其重置爲false。

2

防止發送winmail.dat沒有什麼奇怪的。您可以繼續取消設置ItemSend事件中的TNEF屬性。

請注意,Outlook使用對話跟蹤相關消息。您可以使用對話*(* ID + *索引)相關屬性來識別收件箱中的電子郵件。

查看Does Outlook embed a MessageID or equivalent in its email elements?瞭解更多信息。

相關問題