Hello,
I am new to Exchange Web Service but i have somehow managed to retrieve the information using EWS and written the data into an XML file. Now i need to write the ItemID of the emails retrieved into the XML so that i may later on use it to delete the email message. But i do not need to delete all processed emails only those that i require(Which i will add on the conditions in my application)
Below are my codes on retrieving and writing into the XML, can someone assist me in capturing the ItemID ?
Dim exchangeServer As New ExchangeServiceBinding()
Dim creds As New NetworkCredential(strUserName, strUserPwd, strDomain)
exchangeServer.Url = strServerName
exchangeServer.Credentials = creds
Dim folderIDArray As DistinguishedFolderIdType() = New DistinguishedFolderIdType(0) {}
folderIDArray(0) = New DistinguishedFolderIdType()
folderIDArray(0).Id = DistinguishedFolderIdNameType.inbox
Dim ptuftDisplayName As New PathToUnindexedFieldType()
ptuftDisplayName.FieldURI = UnindexedFieldURIType.folderDisplayName
Dim pteftComment As New PathToExtendedFieldType()
pteftComment.PropertyTag = "0x3004"
pteftComment.PropertyType = MapiPropertyTypeType.[String]
Dim myfoldertype As New GetFolderType()
myfoldertype.FolderIds = folderIDArray
myfoldertype.FolderShape = New FolderResponseShapeType()
myfoldertype.FolderShape.BaseShape = DefaultShapeNamesType.IdOnly
myfoldertype.FolderShape.AdditionalProperties = New BasePathToElementType(1) {}
myfoldertype.FolderShape.AdditionalProperties(0) = ptuftDisplayName
myfoldertype.FolderShape.AdditionalProperties(1) = pteftComment
Dim myFolder As GetFolderResponseType
myFolder = exchangeServer.GetFolder(myfoldertype)
Dim firmtInbox As FolderInfoResponseMessageType = DirectCast(myFolder.ResponseMessages.Items(0), FolderInfoResponseMessageType)
Dim ptuftSubject As New PathToUnindexedFieldType()
ptuftSubject.FieldURI = UnindexedFieldURIType.itemSubject
Dim ptuftBody As New PathToUnindexedFieldType()
ptuftBody.FieldURI = UnindexedFieldURIType.itemAttachments
Dim pteftFlagStatus As New PathToExtendedFieldType()
pteftFlagStatus.PropertyTag = "0x1090"
pteftFlagStatus.PropertyType = MapiPropertyTypeType.[Integer]
Dim findItemRequest As New FindItemType()
findItemRequest.Traversal = ItemQueryTraversalType.Shallow
findItemRequest.ItemShape = New ItemResponseShapeType()
findItemRequest.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties
findItemRequest.ParentFolderIds = New FolderIdType(0) {}
findItemRequest.ParentFolderIds(0) = firmtInbox.Folders(0).FolderId
Dim firt As FindItemResponseType = exchangeServer.FindItem(findItemRequest)
p_strFileName = "EmailReader_" & GetFormatDate() & ".xml"
Dim xmlWriter As New XmlTextWriter(p_strFileName, System.Text.Encoding.UTF8)
xmlWriter.Formatting = Formatting.Indented
xmlWriter.WriteRaw("<?xml version=""1.0""?>")
xmlWriter.WriteStartElement("a:multistatus")
xmlWriter.WriteAttributeString("xmlns:b", "urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/")
xmlWriter.WriteAttributeString("xmlns:d", "urn:schemas:httpmail:")
xmlWriter.WriteAttributeString("xmlns:c", "xml:")
xmlWriter.WriteAttributeString("xmlns:a", "DAV:")
For Each firmtMessage As FindItemResponseMessageType In firt.ResponseMessages.Items
If firmtMessage.RootFolder.TotalItemsInView > 0 Then
For Each it As ItemType In DirectCast(firmtMessage.RootFolder.Item, ArrayOfRealItemsType).Items
Dim getItemRequest As New GetItemType()
getItemRequest.ItemIds = New BaseItemIdType(0) {}
getItemRequest.ItemIds(0) = DirectCast(it.ItemId, BaseItemIdType)
getItemRequest.ItemShape = New ItemResponseShapeType()
getItemRequest.ItemShape.BaseShape = DefaultShapeNamesType.AllProperties
getItemRequest.ItemShape.IncludeMimeContent = True
Dim getItemResponse As GetItemResponseType = exchangeServer.GetItem(getItemRequest)
Dim getItemResponseMessage As ItemInfoResponseMessageType = TryCast(getItemResponse.ResponseMessages.Items(0), ItemInfoResponseMessageType)
xmlWriter.WriteStartElement("a:response")
xmlWriter.WriteElementString("a:href", "")
xmlWriter.WriteStartElement("a:propstat")
xmlWriter.WriteStartElement("a:prop")
xmlWriter.WriteElementString("a:displayname", it.Subject)
xmlWriter.WriteElementString("d:date", it.DateTimeReceived.ToLocalTime())
xmlWriter.WriteElementString("d:from", DirectCast(getItemResponseMessage.Items.Items(0), MessageType).From.Item.EmailAddress)
xmlWriter.WriteElementString("d:to", DirectCast(getItemResponseMessage.Items.Items(0), MessageType).DisplayTo.ToString)
xmlWriter.WriteElementString("d:subject", it.Subject)
xmlWriter.WriteElementString("d:htmldescription", getItemResponseMessage.Items.Items(0).Body.Value.ToString())
p_intCounter = p_intCounter + 1
Next
End If
Next