## EMailPart EMailPart |

## Synopsis

    struct              EMailPart;
    enum                EMailPartValidityFlags;
    struct              EMailPartValidityPair;
    EMailPart *         e_mail_part_new                     (CamelMimePart *mime_part,
                                                             const gchar *id);
    const gchar *       e_mail_part_get_id                  (EMailPart *part);
    const gchar *       e_mail_part_get_cid                 (EMailPart *part);
    void                e_mail_part_set_cid                 (EMailPart *part,
                                                             const gchar *cid);
    gboolean            e_mail_part_id_has_prefix           (EMailPart *part,
                                                             const gchar *prefix);
    gboolean            e_mail_part_id_has_suffix           (EMailPart *part,
                                                             const gchar *suffix);
    gboolean            e_mail_part_id_has_substr           (EMailPart *part,
                                                             const gchar *substr);
    CamelMimePart *     e_mail_part_ref_mime_part           (EMailPart *part);
    const gchar *       e_mail_part_get_mime_type           (EMailPart *part);
    void                e_mail_part_set_mime_type           (EMailPart *part,
                                                             const gchar *mime_type);
    struct _EMailPartList * e_mail_part_ref_part_list       (EMailPart *part);
    void                e_mail_part_set_part_list           (EMailPart *part,
                                                             struct _EMailPartList *part_list);
    gboolean            e_mail_part_get_is_attachment       (EMailPart *part);
    void                e_mail_part_set_is_attachment       (EMailPart *part,
                                                             gboolean is_attachment);
    void                e_mail_part_bind_dom_element        (EMailPart *part,
                                                             WebKitDOMElement *element);
    void                e_mail_part_update_validity         (EMailPart *part,
                                                             CamelCipherValidity *validity,
                                                             EMailPartValidityFlags validity_type);
    CamelCipherValidity * e_mail_part_get_validity          (EMailPart *part,
                                                             EMailPartValidityFlags validity_type);
    gboolean            e_mail_part_has_validity            (EMailPart *part);
    EMailPartValidityFlags e_mail_part_get_validity_flags   (EMailPart *part);
    gboolean            e_mail_part_is_secured              (CamelMimePart *part);
    const gchar *       e_mail_part_snoop_type              (CamelMimePart *part);
    gboolean            e_mail_part_is_attachment           (CamelMimePart *part);
    void                e_mail_part_preserve_charset_in_content_type
                                                            (CamelMimePart *ipart,
                                                             CamelMimePart *opart);
    CamelMimePart *     e_mail_part_get_related_display_part
                                                            (CamelMimePart *part,
                                                             gint *out_displayid);
    void                e_mail_part_animation_extract_frame (GBytes *bytes,
                                                             gchar **out_frame,
                                                             gsize *out_len);
    gchar *             e_mail_part_build_uri               (CamelFolder *folder,
                                                             const gchar *message_uid,
                                                             const gchar *first_param_name,
                                                             ...);
    gchar *             e_mail_part_describe                (CamelMimePart *part,
                                                             const gchar *mime_type);
    gboolean            e_mail_part_is_inline               (CamelMimePart *part,
                                                             GQueue *extensions);
    gboolean            e_mail_part_utils_body_refers       (const gchar *body,
                                                             const gchar *cid);

## Object Hierarchy

      GObject
       +----EMailPart
             +----EMailPartAttachmentBar
             +----EMailPartAttachment
             +----EMailPartHeaders
             +----EMailPartImage

## Implemented Interfaces

EMailPart implements EExtensible.

## Properties

      "cid"                      gchar*                : Read / Write
      "id"                       gchar*                : Read / Write / Construct Only
      "is-attachment"            gboolean              : Read / Write / Construct
      "mime-part"                CamelMimePart*        : Read / Write / Construct Only
      "mime-type"                gchar*                : Read / Write
      "part-list"                EMailPartList*        : Read / Write

## Description

## Details

### struct EMailPart

    struct EMailPart;

The EMailPart is a wrapper around CamelMimePart which holds additional information about the mime part, like it's ID, encryption type etc.

Each EMailPart must have a unique ID. The ID is a dot-separated hierarchical description of the location of the part within the email message.

### enum EMailPartValidityFlags

    typedef enum {
     /*< flags >*/
    	E_MAIL_PART_VALIDITY_NONE = 0,
    	E_MAIL_PART_VALIDITY_PGP = 1 << 0,
    	E_MAIL_PART_VALIDITY_SMIME = 1 << 1,
    	E_MAIL_PART_VALIDITY_SIGNED = 1 << 2,
    	E_MAIL_PART_VALIDITY_ENCRYPTED = 1 << 3
    } EMailPartValidityFlags;

`E_MAIL_PART_VALIDITY_NONE` |
`E_MAIL_PART_VALIDITY_PGP` |
`E_MAIL_PART_VALIDITY_SMIME` |
`E_MAIL_PART_VALIDITY_SIGNED` |
`E_MAIL_PART_VALIDITY_ENCRYPTED` |

### struct EMailPartValidityPair

    struct EMailPartValidityPair {
    	EMailPartValidityFlags validity_type;
    	CamelCipherValidity *validity;
    };

### e_mail_part_new ()

    EMailPart *         e_mail_part_new                     (CamelMimePart *mime_part,
                                                             const gchar *id);

Creates a new EMailPart for the given `mime_part`.

`mime_part` : | (allow-none) a CamelMimePart or `NULL`
`id` : | part ID
Returns : | a new EMailPart

### e_mail_part_get_id ()

    const gchar *       e_mail_part_get_id                  (EMailPart *part);

### e_mail_part_get_cid ()

    const gchar *       e_mail_part_get_cid                 (EMailPart *part);

### e_mail_part_set_cid ()

    void                e_mail_part_set_cid                 (EMailPart *part,
                                                             const gchar *cid);

### e_mail_part_id_has_prefix ()

    gboolean            e_mail_part_id_has_prefix           (EMailPart *part,
                                                             const gchar *prefix);

### e_mail_part_id_has_suffix ()

    gboolean            e_mail_part_id_has_suffix           (EMailPart *part,
                                                             const gchar *suffix);

### e_mail_part_id_has_substr ()

    gboolean            e_mail_part_id_has_substr           (EMailPart *part,
                                                             const gchar *substr);

### e_mail_part_ref_mime_part ()

    CamelMimePart *     e_mail_part_ref_mime_part           (EMailPart *part);

### e_mail_part_get_mime_type ()

    const gchar *       e_mail_part_get_mime_type           (EMailPart *part);

### e_mail_part_set_mime_type ()

    void                e_mail_part_set_mime_type           (EMailPart *part,
                                                             const gchar *mime_type);

### e_mail_part_ref_part_list ()

    struct _EMailPartList * e_mail_part_ref_part_list       (EMailPart *part);

### e_mail_part_set_part_list ()

    void                e_mail_part_set_part_list           (EMailPart *part,
                                                             struct _EMailPartList *part_list);

### e_mail_part_get_is_attachment ()

    gboolean            e_mail_part_get_is_attachment       (EMailPart *part);

### e_mail_part_set_is_attachment ()

    void                e_mail_part_set_is_attachment       (EMailPart *part,
                                                             gboolean is_attachment);

### e_mail_part_bind_dom_element ()

    void                e_mail_part_bind_dom_element        (EMailPart *part,
                                                             WebKitDOMElement *element);

### e_mail_part_update_validity ()

    void                e_mail_part_update_validity         (EMailPart *part,
                                                             CamelCipherValidity *validity,
                                                             EMailPartValidityFlags validity_type);

Updates validity of the `part`. When the part already has some validity set, the new `validity` and `validity_type` are just appended, preserving the original validity. Validities of the same type (PGP or S/MIME) are merged together.

`part` : | An EMailPart
`validity_type` : | E_MAIL_PART_VALIDITY_* flags
`validity` : | a CamelCipherValidity

### e_mail_part_get_validity ()

    CamelCipherValidity * e_mail_part_get_validity          (EMailPart *part,
                                                             EMailPartValidityFlags validity_type);

Returns, validity of `part` contains any validity with the same bits as `validity_type` set. It should contain all bits of it.

`part` : | An EMailPart
`validity_type` : | E_MAIL_PART_VALIDITY_* flags
Returns : | a CamelCipherValidity of the given type, `NULL` if not found

Since 3.8

### e_mail_part_has_validity ()

    gboolean            e_mail_part_has_validity            (EMailPart *part);

### e_mail_part_get_validity_flags ()

    EMailPartValidityFlags e_mail_part_get_validity_flags   (EMailPart *part);

### e_mail_part_is_secured ()

    gboolean            e_mail_part_is_secured              (CamelMimePart *part);

Whether `part` is signed or encrypted or not.

`part` : | a CamelMimePart
Returns : | TRUE/FALSE

### e_mail_part_snoop_type ()

    const gchar *       e_mail_part_snoop_type              (CamelMimePart *part);

Tries to snoop the mime type of a part.

`part` : | a CamelMimePart
Returns : | `NULL` if unknown (more likely application/octet-stream).

### e_mail_part_is_attachment ()

    gboolean            e_mail_part_is_attachment           (CamelMimePart *part);

Returns true if the part is an attachment.

A part is not considered an attachment if it is a multipart, or a text part with no filename. It is used to determine if an attachment header should be displayed for the part.

Content-Disposition is not checked.

`part` : | Part to check.
Returns : | TRUE/FALSE

### e_mail_part_preserve_charset_in_content_type ()

    void                e_mail_part_preserve_charset_in_content_type
                                                            (CamelMimePart *ipart,
                                                             CamelMimePart *opart);

Copies 'charset' part of content-type header from `ipart` to `opart`.

`ipart` : | Source CamelMimePart
`opart` : | Target CamelMimePart

### e_mail_part_get_related_display_part ()

    CamelMimePart *     e_mail_part_get_related_display_part
                                                            (CamelMimePart *part,
                                                             gint *out_displayid);

Goes through all subparts of given `part` and tries to determine which part should be displayed and which parts are just attachments to the part.

`part` : | a multipart/related or multipart/alternative CamelMimePart
`out_displayid` : | (out) returns index of the returned part
Returns : | A CamelMimePart that should be displayed

### e_mail_part_animation_extract_frame ()

    void                e_mail_part_animation_extract_frame (GBytes *bytes,
                                                             gchar **out_frame,
                                                             gsize *out_len);

### e_mail_part_build_uri ()

    gchar *             e_mail_part_build_uri               (CamelFolder *folder,
                                                             const gchar *message_uid,
                                                             const gchar *first_param_name,
                                                             ...);

### e_mail_part_describe ()

    gchar *             e_mail_part_describe                (CamelMimePart *part,
                                                             const gchar *mime_type);

Generate a simple textual description of a part, `mime_type` represents the content.

`part` : | a CamelMimePart
`mime_type` : | MIME type of the content

### e_mail_part_is_inline ()

    gboolean            e_mail_part_is_inline               (CamelMimePart *part,
                                                             GQueue *extensions);

### e_mail_part_utils_body_refers ()

    gboolean            e_mail_part_utils_body_refers       (const gchar *body,
                                                             const gchar *cid);

`body` : | text body to search for references in; can be `NULL`, then returns `FALSE`
`cid` : | a Content-ID to search for; if found in body, it should be of form "cid:xxxxx"; can be `NULL`
Returns : | `FALSE` if any of the arguments is `NULL`.

## Property Details

### The `"cid"` property

      "cid"                      gchar*                : Read / Write

The MIME Content-ID.

Default value: NULL

### The `"id"` property

      "id"                       gchar*                : Read / Write / Construct Only

The part ID.

Default value: NULL

### The `"is-attachment"` property

      "is-attachment"            gboolean              : Read / Write / Construct

Format the part as an attachment.

Default value: FALSE

### The `"mime-part"` property

      "mime-part"                CamelMimePart*        : Read / Write / Construct Only

The MIME part.

### The `"mime-type"` property

      "mime-type"                gchar*                : Read / Write

The MIME type.

Default value: NULL

### The `"part-list"` property

      "part-list"                EMailPartList*        : Read / Write

The part list that owns the part.