我正在使用Exchange Web服務託管API。我正在添加一個擴展屬性,以便在收件箱中郵寄郵件時,它們會根據某些條件進行處理。因此,並非所有的郵件都會得到這個擴展屬性。無法獲取電子郵件的內置屬性以及擴展屬性
接下來,我正在重新提取收件箱中的所有郵件,如果他們將此屬性附加到他們,我再處理它們。
下面是一個簡單的方法getAllMailsInInbox()
,我曾寫信給重新讀取該郵件在收件箱:
class MyClass
{
private static Guid isProcessedPropertySetId;
private static ExtendedPropertyDefinition isProcessedPropertyDefinition = null;
static MyClass()
{
isProcessedPropertySetId = new Guid("{20F3C09F-7CAD-44c6-BDBF-8FCB324244}");
isProcessedPropertyDefinition = new ExtendedPropertyDefinition(isProcessedPropertySetId, "IsItemProcessed", MapiPropertyType.String);
}
public List<EmailMessage> getAllMailsInInbox()
{
List<EmailMessage> emails = new List<EmailMessage>();
ItemView itemView = new ItemView(100, 0);
FindItemsResults<Item> itemResults = null;
PropertySet psPropSet = new PropertySet(BasePropertySet.IdOnly);
itemView.PropertySet = psPropSet;
PropertySet itItemPropSet = new PropertySet(BasePropertySet.IdOnly,
ItemSchema.Attachments,
ItemSchema.Subject,
ItemSchema.Importance,
ItemSchema.DateTimeReceived,
ItemSchema.DateTimeSent,
ItemSchema.ItemClass,
ItemSchema.Size,
ItemSchema.Sensitivity,
EmailMessageSchema.From,
EmailMessageSchema.CcRecipients,
EmailMessageSchema.ToRecipients,
EmailMessageSchema.InternetMessageId,
ItemSchema.MimeContent,
isProcessedPropertyDefinition); //***
itemResults = service.FindItems(WellKnownFolderName.Inbox, itemView);
service.LoadPropertiesForItems(itemResults.Items, itItemPropSet);
String subject = itItem.Subject; //Exception: "You must load or assign this property before you can read its value."
//....
}
}
正如你所看到的,隨叫隨到service.LoadPropertiesForItems()
,這不加載任何特性,從而導致You must load or assign this property before you can read its value.
異常而訪問任何這些屬性。
如果我從itItemPropSet
屬性集中刪除isProcessedPropertyDefinition
,它會正確提取所有屬性。
所以我可以只知道如何獲取所有內置EmailMessage屬性以及擴展屬性?
對不起,我在編寫問題時只是操縱了GUID。別管它。 – Mahesha999