        Cone©

MAIL::MIMESTRUCT(3x)

NAME
mail::mimestruct - Message MIME structure

SYNOPSIS

#include <libmail/structure.H>
mail::mimestruct myMimeStructure;

USAGE

mail::mimestruct describes the contents of a MIME-formatted message. A multipart MIME message has a single mail::mimestruct object that represents the entire message, and series of mail::mimestruct objects, one object for each part of the multipart MIME section. The additional mail::mimestruct objects are maintained by their parent mail::mimestruct object, and are automatically destroyed when the parent object is destroyed.

A mail::mimestruct contains the following fields:

std::string mime_id
    An opaque identifier of this MIME section. Applications should handle this field as an opaque text string, which is interpreted by LibMAIL . A same message, for example, may have different mime_id fields if it comes from an IMAP account, or a POP3 account.

    The only exception to this rule is that the mail::mimestruct object that represents the entire message will have an empty string in mime_id.

std::string type
    The major MIME type, in uppercase.

std::string subtype
    The minor MIME subtype, in uppercase.

mail::mimestruct::parameterList type_parameters
    Additional attributes parsed from the Content-Type: MIME header. See below for more information.

std::string content_id
    The contents of the MIME Content-ID: header.

std::string content_description
    The contents of the MIME Content-Description: header.

std::string content_transfer_encoding
    The MIME encoding method.

std::string content_md5
    The contents of the MIME Content-MD5: header.

std::string content_language
    The contents of the MIME Content-Language: header.

std::string content_disposition
    The MIME Content-Disposition: header, either "INLINE", or "ATTACHMENT" (or blank, if the header is not present).

size_t content_size
    The approximate size of the MIME section, in bytes (for non-multipart MIME sections only).

size_t content_lines
    Approximate number of lines in a TEXT MIME section.

mail::mimestruct::parameterList content_disposition_parameters
    Additional attributes parsed from the Content-Disposition: MIME header. See below for more information.

  mail::mimestruct methods

bool flag=messagerfc822();
    Returns true if type is "MESSAGE" and subtype is "RFC822".

bool flag=messagerfc822()
    Returns true if type is "MESSAGE" and subtype is "RFC822".

mail::envelope &myEnvelope=getEnvelope()
    Returns a mail::envelope object, if messagerfc822 returns true.

size_t numChildren=getNumChildren()
    Returns the number of MIME sections in a multipart MIME message.

mail::mimestruct *child=getChild(size_t childNum)
    Returns a pointer to a mail::mimestruct object that represents a single part of a multipart MIME message. childNum must be between zero and one less than the number of parts returned by getNumChildren.

mail::mimestruct *parent=getParent()
    Returns a pointer to a mail::mimestruct object that represents the parent of this MIME part, if this mail::mimestruct object represents a single part of a multipart MIME message. Returns NULL if this mail::mimestruct object represents the entire MIME message.

    Note

    mail::mimestruct objects that represent MESSAGE/RFC822 content should have getNumChildren return 1, and getChild with childNum set to 0 should return a pointer to a mail::mimestruct object that represents the MESSAGE/RFC822 message. However, getNumChildren may return 0 if the MIME message is corrupted.

MAIL::MIMESTRUCT::PARAMETERLIST

A mail::mimestruct::parameterList object holds parsed MIME attributes in the Content-Type: and Content-Disposition: headers. A mail::mimestruct::parameterList object has the following methods:

bool flag=exists(std::string name);
    This method returns true if the attribute name exists.

std::string str=get(std::string name, std::string charset);
    Returns the value of attribute name (uppercase). If info is not NULL, the attribute's value is converted to the specified character set (if the attribute uses RFC 2231[1] to specify its character set and language).

void set(std::string name, std::string value, std::string charset, std::string language);
    Set the attribute name to value. If charset and/or language are not empty strings, name's character set and language are indicated accordingly, as per RFC 2231[1].

mail::mimestruct::parameterList::iterator begin(), end(); mail::mimestruct::parameterList::const_iterator begin() const, end() const;
    The begin and end functions return the equivalent iterators over the individual name/value MIME attributes. The iterators point to a std::pair<std::string, std::string>; first is the attribute name (uppercased), and second is its value. (The underlying structure being iterated is a std::map<std::string, std::string>.)

SEE ALSO

mail::envelope(3x), mail::account::readMessageAttributes(3x).

AUTHOR

Sam Varshavchik

NOTES

1.  RFC 2231
    http://www.rfc-editor.org/rfc/rfc2231.txt