This function fetches all the structured information for a given message. The optional flags parameter only has a single option, FT_UID, which tells the function to treat the msg_number argument as a UID. The returned object includes the envelope, internal date, size, flags and body structure along with a similar object for each mime attachement. The structure of the returned objects is as follows:
Table 1. Returned Objects for imap_fetchstructure()
| type | Primary body type | 
| encoding | Body transfer encoding | 
| ifsubtype | TRUE if there is a subtype string | 
| subtype | MIME subtype | 
| ifdescription | TRUE if there is a description string | 
| description | Content description string | 
| ifid | TRUE if there is an identification string | 
| id | Identification string | 
| lines | Number of lines | 
| bytes | Number of bytes | 
| ifdisposition | TRUE if there is a disposition string | 
| disposition | Disposition string | 
| ifdparameters | TRUE if the dparameters array exists | 
| dparameters | Disposition parameter array | 
| ifparameters | TRUE if the parameters array exists | 
| parameters | MIME parameters array | 
| parts | Array of objects describing each message part | 
dparameters is an array of objects where each object has an "attribute" and a "value" property.
Parameter is an array of objects where each object has an "attributte" and a "value" property.
Parts is an array of objects identical in structure to the top-level object, with the limitation that it cannot contain further 'parts' objects.
See also: imap_fetchbody().