Attachments and EWS in Exchange
Learn about attachments and how your EWS Managed API or EWS in Exchange client represents them.
Usually, attachments are associated with email items, but in fact, all EWS items — email messages, calendar items, contacts, tasks — can include attachments.
Types of attachments
EWS categorizes attachments into two groups: file attachments and item attachments.
Item attachments: Strongly-typed EWS items, such as email messages and calendar items, that are attached to another strongly-typed EWS item. Any strongly-typed item that can be created by using the EWS Managed API or EWS can be used as an item attachment. The content of an item attachment is the strongly-typed item, which provides easy access to all its properties. Item attachments can have their own item attachments, so a hierarchy of item attachments (or nesting of attachments) is possible.
File attachments: Any file, such as a .txt, .jpg, .zip, .pdf, or even a .msg file. A file attachment only has a few properties, one of which is the base-64 encoded content of the file.
Reference attachments: Any attachment that is referenced by a file provider, such as a file located in the cloud. An attachment can be from multiple providers.
When you add or retrieve attachments from an item, you'll do it differently depending on whether it's a file attachment or an item attachment. For example, to add a file attachment to an item, you can just pass in the location of the file. To add an existing item as an item attachment, you actually have to copy the properties or the MIME content of the existing item to a new item attachment; you can't just bind to the existing item. So distinguishing between the two types of attachments is important. More details about the differences between item attachments and file attachments are discussed in the articles In this section.
How are attachments represented programmatically?
Attachments are stored in a collection on the EWS item. The attachments collection is made up of file attachments and/or item attachments. Metadata about the attachment collection is available when you get an item by using the EWS Managed API Item.Bind method or the EWS GetItem operation, but additional calls are required to actually retrieve the contents of the attachments.
Table 1. Item metadata about attachments
Metadata entity | EWS Managed API property | EWS element |
---|---|---|
Attachment indicator (does not flag inline attachments) |
Item.HasAttachments |
HasAttachments |
Attachment collection |
Item.Attachments |
Attachments |
Attachment ID |
Attachment.Id |
AttachmentId |
Table 2. Attachment entities
Attachment type | EWS Managed API class | EWS element |
---|---|---|
File attachment |
FileAttachment |
FileAttachment |
Item attachment |
ItemAttachment ItemAttachment<TItem> |
ItemAttachment |
Reference attachment |
ReferenceAttachmentType complexType (EWS) |
ReferenceAttachment |
Inline attachments
Inline attachments are a special breed of attachment. Both file attachments and item attachments can be inline attachments. An inline attachment appears as part of the body content and retains its position relative to the rest of the content in the item.
An attachment is an inline attachment if the EWS Managed API IsInline property or the EWS IsInline element is set to true. Inline attachments use the following optional properties and elements to identify the location of an inline attachment:
EWS Managed API — ContentId or ContentLocation properties.
EWS — ContentId or ContentLocation element.
Note that the EWS Managed API HasAttachments property and the EWS HasAttachments element do not reflect the existence of inline attachments, and that's why inline attachments are also called hidden attachments. So if you set the EWS Managed API IsInline property or the EWS IsInline element to true, and the item has no other attachments, HasAttachments will be set to false. If your client uses HasAttachments to populate an attachment indicator or icon on an email, be aware that the icon will not appear for emails with inline attachments.