## CamelMultipart CamelMultipart |

## Synopsis

                        CamelMultipart;
    CamelMultipart *    camel_multipart_new                 (void);
    void                camel_multipart_add_part            (CamelMultipart *multipart,
                                                             CamelMimePart *part);
    void                camel_multipart_add_part_at         (CamelMultipart *multipart,
                                                             CamelMimePart *part,
                                                             guint index);
    void                camel_multipart_remove_part         (CamelMultipart *multipart,
                                                             CamelMimePart *part);
    CamelMimePart *     camel_multipart_remove_part_at      (CamelMultipart *multipart,
                                                             guint index);
    CamelMimePart *     camel_multipart_get_part            (CamelMultipart *multipart,
                                                             guint index);
    guint               camel_multipart_get_number          (CamelMultipart *multipart);
    void                camel_multipart_set_boundary        (CamelMultipart *multipart,
                                                             const gchar *boundary);
    const gchar *       camel_multipart_get_boundary        (CamelMultipart *multipart);
    void                camel_multipart_set_preface         (CamelMultipart *multipart,
                                                             const gchar *preface);
    void                camel_multipart_set_postface        (CamelMultipart *multipart,
                                                             const gchar *postface);
    gint                camel_multipart_construct_from_parser
                                                            (CamelMultipart *multipart,
                                                             struct _CamelMimeParser *parser);

## Object Hierarchy

      GObject
       +----CamelObject
             +----CamelDataWrapper
                   +----CamelMultipart
                         +----CamelMultipartEncrypted
                         +----CamelMultipartSigned

## Description

## Details

### CamelMultipart

    typedef struct _CamelMultipart CamelMultipart;

### camel_multipart_new ()

    CamelMultipart *    camel_multipart_new                 (void);

Create a new CamelMultipart object.

Returns : | a new CamelMultipart object

### camel_multipart_add_part ()

    void                camel_multipart_add_part            (CamelMultipart *multipart,
                                                             CamelMimePart *part);

Appends the part to the multipart object.

`multipart` : | a CamelMultipart object
`part` : | a CamelMimePart to add

### camel_multipart_add_part_at ()

    void                camel_multipart_add_part_at         (CamelMultipart *multipart,
                                                             CamelMimePart *part,
                                                             guint index);

Adds the part to the multipart object after the `index`'th element. If `index` is greater than the number of parts, it is equivalent to camel_multipart_add_part.

`multipart` : | a CamelMultipart object
`part` : | a CamelMimePart to add
`index` : | index to add the multipart at

### camel_multipart_remove_part ()

    void                camel_multipart_remove_part         (CamelMultipart *multipart,
                                                             CamelMimePart *part);

Removes `part` from `multipart`.

`multipart` : | a CamelMultipart object
`part` : | a CamelMimePart to remove

### camel_multipart_remove_part_at ()

    CamelMimePart *     camel_multipart_remove_part_at      (CamelMultipart *multipart,
                                                             guint index);

Remove the indicated part from the multipart object.

`multipart` : | a CamelMultipart object
`index` : | a zero-based index indicating the part to remove
Returns : | the removed part. Note that it is g_object_unref'ed before being returned, which may cause it to be destroyed.

### camel_multipart_get_part ()

    CamelMimePart *     camel_multipart_get_part            (CamelMultipart *multipart,
                                                             guint index);

`multipart` : | a CamelMultipart object
`index` : | a zero-based index indicating the part to get
Returns : | the indicated subpart, or `NULL`

### camel_multipart_get_number ()

    guint               camel_multipart_get_number          (CamelMultipart *multipart);

`multipart` : | a CamelMultipart object
Returns : | the number of subparts in `multipart`

### camel_multipart_set_boundary ()

    void                camel_multipart_set_boundary        (CamelMultipart *multipart,
                                                             const gchar *boundary);

Sets the message boundary for `multipart` to `boundary`. This should be a string which does not occur anywhere in any of `multipart`'s subparts. If `boundary` is `NULL`, a randomly-generated boundary will be used.

`multipart` : | a CamelMultipart object
`boundary` : | the message boundary, or `NULL`

### camel_multipart_get_boundary ()

    const gchar *       camel_multipart_get_boundary        (CamelMultipart *multipart);

`multipart` : | a CamelMultipart object
Returns : | the boundary

### camel_multipart_set_preface ()

    void                camel_multipart_set_preface         (CamelMultipart *multipart,
                                                             const gchar *preface);

Set the preface text for this multipart. Will be written out infront of the multipart. This text should only include US-ASCII strings, and be relatively short, and will be ignored by any MIME mail client.

`multipart` : | a CamelMultipart object
`preface` : | the multipart preface

### camel_multipart_set_postface ()

    void                camel_multipart_set_postface        (CamelMultipart *multipart,
                                                             const gchar *postface);

Set the postfix text for this multipart. Will be written out after the last boundary of the multipart, and ignored by any MIME mail client.

Generally postface texts should not be sent with multipart messages.

`multipart` : | a CamelMultipart object
`postface` : | multipat postface

### camel_multipart_construct_from_parser ()

    gint                camel_multipart_construct_from_parser
                                                            (CamelMultipart *multipart,
                                                             struct _CamelMimeParser *parser);

Construct a multipart from a parser.

`multipart` : | a CamelMultipart object
`parser` : | a CamelMimeParser object
Returns : | `0` on success or `-1` on fail