Poco::Net

class MailMessage

Library: Net
Package: Mail
Header: Poco/Net/MailMessage.h

Description

This class represents an e-mail message for use with the SMTPClientSession and POPClientSession classes.

MailMessage supports both old-style plain text messages, as well as MIME multipart mail messages with attachments.

For multi-part messages, the following content transfer encodings are supported: 7bit, 8bit, quoted-printable and base64.

Inheritance

Direct Base Classes: MessageHeader

All Base Classes: MessageHeader, NameValueCollection

Member Summary

Member Functions: addAttachment, addContent, addPart, addRecipient, appendRecipient, contentTransferEncodingToString, encodeWord, getContent, getContentType, getDate, getSender, getSubject, handlePart, isMultipart, lineLength, makeMultipart, read, readHeader, readMultipart, readPart, recipients, setContent, setContentType, setDate, setRecipientHeaders, setSender, setSubject, write, writeEncoded, writeHeader, writeMultipart, writePart

Inherited Functions: add, begin, clear, empty, end, erase, find, get, has, operator, operator =, quote, read, set, size, splitElements, splitParameters, swap, write

Nested Classes

struct Part protected

 more...

Types

PartVec protected

typedef std::vector < Part > PartVec;

Recipients

typedef std::vector < MailRecipient > Recipients;

Enumerations

ContentDisposition

CONTENT_INLINE

CONTENT_ATTACHMENT

ContentTransferEncoding

ENCODING_7BIT

ENCODING_8BIT

ENCODING_QUOTED_PRINTABLE

ENCODING_BASE64

Constructors

MailMessage

MailMessage();

Creates an empty MailMessage.

Destructor

~MailMessage virtual

virtual ~MailMessage();

Destroys the MailMessage.

Member Functions

addAttachment

void addAttachment(
    const std::string & name,
    PartSource * pSource,
    ContentTransferEncoding encoding = ENCODING_BASE64
);

Adds an attachment to the mail message by calling addPart(name, pSource, CONTENT_ATTACHMENT, encoding);

addContent

void addContent(
    PartSource * pSource,
    ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE
);

Adds a part to the mail message by calling addPart("", pSource, CONTENT_INLINE, encoding);

addPart

void addPart(
    const std::string & name,
    PartSource * pSource,
    ContentDisposition disposition,
    ContentTransferEncoding encoding
);

Adds a part/attachment to the mail message.

The MailMessage takes ownership of the PartSource and deletes it when it is no longer needed.

The MailMessage will be converted to a multipart message if it is not already one.

addRecipient

void addRecipient(
    const MailRecipient & recipient
);

Adds a recipient for the message.

encodeWord static

static std::string encodeWord(
    const std::string & text,
    const std::string & charset = "UTF-8"
);

If the given string contains non-ASCII characters, encodes the given string using RFC 2047 "Q" word encoding.

The given text must already be encoded in the character set given in charset (default is UTF-8).

Returns the encoded string, or the original string if it consists only of ASCII characters.

getContent inline

const std::string & getContent() const;

Returns the content of the mail message.

A content will only be returned for single-part messages. The content of multi-part mail messages will be reported through the registered PartHandler.

getContentType

const std::string & getContentType() const;

Returns the content type for the message.

getDate

Poco::Timestamp getDate() const;

Returns the value of the Date header.

getSender

const std::string & getSender() const;

Returns the sender of the message (taken from the From header field).

getSubject

const std::string & getSubject() const;

Returns the subject of the message.

isMultipart

bool isMultipart() const;

Returns true if and only if the message is a multipart message.

read

void read(
    std::istream & istr,
    PartHandler & handler
);

Reads the MailMessage from the given input stream.

If the message has multiple parts, the parts are reported to the PartHandler. If the message is not a multi-part message, the content is stored in a string available by calling getContent().

read virtual

void read(
    std::istream & istr
);

Reads the MailMessage from the given input stream.

The raw message (including all MIME parts) is stored in a string and available by calling getContent().

See also: Poco::Net::MessageHeader::read()

recipients inline

const Recipients & recipients() const;

Returns the recipients of the message.

setContent

void setContent(
    const std::string & content,
    ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE
);

Sets the content of the mail message.

If the content transfer encoding is ENCODING_7BIT or ENCODING_8BIT, the content string must be formatted according to the rules of an internet email message.

The message will be sent as a single-part message.

setContentType

void setContentType(
    const std::string & mediaType
);

Sets the content type for the message.

setContentType

void setContentType(
    const MediaType & mediaType
);

Sets the content type for the message.

setDate

void setDate(
    const Poco::Timestamp & dateTime
);

Sets the Date header to the given date/time value.

setSender

void setSender(
    const std::string & sender
);

Sets the sender of the message (which ends up in the From header field).

The sender must either be a valid email address, or a real name followed by an email address enclosed in < and >.

The sender must not contain any non-ASCII characters. To include non-ASCII characters in the sender, use RFC 2047 word encoding (see encodeWord()).

setSubject

void setSubject(
    const std::string & subject
);

Sets the subject of the message.

The subject must not contain any non-ASCII characters. To include non-ASCII characters in the subject, use RFC 2047 word encoding (see encodeWord()).

write virtual

void write(
    std::ostream & ostr
) const;

Writes the mail message to the given output stream.

See also: Poco::Net::MessageHeader::write()

appendRecipient protected static

static void appendRecipient(
    const MailRecipient & recipient,
    std::string & str
);

contentTransferEncodingToString protected static

static const std::string & contentTransferEncodingToString(
    ContentTransferEncoding encoding
);

handlePart protected

void handlePart(
    std::istream & istr,
    const MessageHeader & header,
    PartHandler & handler
);

lineLength protected static

static int lineLength(
    const std::string & str
);

makeMultipart protected

void makeMultipart();

readHeader protected

void readHeader(
    std::istream & istr
);

readMultipart protected

void readMultipart(
    std::istream & istr,
    PartHandler & handler
);

readPart protected

void readPart(
    std::istream & istr,
    const MessageHeader & header,
    PartHandler & handler
);

setRecipientHeaders protected

void setRecipientHeaders(
    MessageHeader & headers
) const;

writeEncoded protected

void writeEncoded(
    std::istream & istr,
    std::ostream & ostr,
    ContentTransferEncoding encoding
) const;

writeHeader protected

void writeHeader(
    const MessageHeader & header,
    std::ostream & ostr
) const;

writeMultipart protected

void writeMultipart(
    MessageHeader & header,
    std::ostream & ostr
) const;

writePart protected

void writePart(
    MultipartWriter & writer,
    const Part & part
) const;

Variables

CTE_7BIT protected static

static const std::string CTE_7BIT;

CTE_8BIT protected static

static const std::string CTE_8BIT;

CTE_BASE64 protected static

static const std::string CTE_BASE64;

CTE_QUOTED_PRINTABLE protected static

static const std::string CTE_QUOTED_PRINTABLE;

EMPTY_HEADER protected static

static const std::string EMPTY_HEADER;

HEADER_BCC protected static

static const std::string HEADER_BCC;

HEADER_CC protected static

static const std::string HEADER_CC;

HEADER_CONTENT_DISPOSITION protected static

static const std::string HEADER_CONTENT_DISPOSITION;

HEADER_CONTENT_TRANSFER_ENCODING protected static

static const std::string HEADER_CONTENT_TRANSFER_ENCODING;

HEADER_CONTENT_TYPE protected static

static const std::string HEADER_CONTENT_TYPE;

HEADER_DATE protected static

static const std::string HEADER_DATE;

HEADER_FROM protected static

static const std::string HEADER_FROM;

HEADER_MIME_VERSION protected static

static const std::string HEADER_MIME_VERSION;

HEADER_SUBJECT protected static

static const std::string HEADER_SUBJECT;

HEADER_TO protected static

static const std::string HEADER_TO;

TEXT_PLAIN protected static

static const std::string TEXT_PLAIN;