Library: Net
Package: Mail
Header: Poco/Net/MailMessage.h
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.
Direct Base Classes: MessageHeader
All Base Classes: MessageHeader, NameValueCollection
Member Functions: addAttachment, addContent, addPart, addRecipient, appendRecipient, contentTransferEncodingToString, 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
typedef std::vector < Part > PartVec;
typedef std::vector < MailRecipient > Recipients;
MailMessage();
Creates an empty MailMessage.
virtual ~MailMessage();
Destroys the MailMessage.
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);
void addContent(
PartSource * pSource,
ContentTransferEncoding encoding = ENCODING_QUOTED_PRINTABLE
);
Adds a part to the mail message by calling addPart("", pSource, CONTENT_INLINE, encoding);
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.
void addRecipient(
const MailRecipient & recipient
);
Adds a recipient for the message.
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.
const std::string & getContentType() const;
Returns the content type for the message.
Poco::Timestamp getDate() const;
Returns the value of the Date header.
const std::string & getSender() const;
Returns the sender of the message (taken from the From header field).
const std::string & getSubject() const;
Returns the subject of the message.
bool isMultipart() const;
Returns true iff the message is a multipart message.
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().
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()
const Recipients & recipients() const;
Returns the recipients of the message.
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.
void setContentType(
const std::string & mediaType
);
Sets the content type for the message.
void setContentType(
const MediaType & mediaType
);
Sets the content type for the message.
void setDate(
const Poco::Timestamp & dateTime
);
Sets the Date header to the given date/time value.
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 >.
void setSubject(
const std::string & subject
);
Sets the subject of the message.
void write(
std::ostream & ostr
) const;
Writes the mail message to the given output stream.
See also: Poco::Net::MessageHeader::write()
static void appendRecipient(
const MailRecipient & recipient,
std::string & str
);
static const std::string & contentTransferEncodingToString(
ContentTransferEncoding encoding
);
void handlePart(
std::istream & istr,
const MessageHeader & header,
PartHandler & handler
);
static int lineLength(
const std::string & str
);
void makeMultipart();
void readHeader(
std::istream & istr
);
void readMultipart(
std::istream & istr,
PartHandler & handler
);
void readPart(
std::istream & istr,
const MessageHeader & header,
PartHandler & handler
);
void setRecipientHeaders(
MessageHeader & headers
) const;
void writeEncoded(
std::istream & istr,
std::ostream & ostr,
ContentTransferEncoding encoding
) const;
void writeHeader(
const MessageHeader & header,
std::ostream & ostr
) const;
void writeMultipart(
MessageHeader & header,
std::ostream & ostr
) const;
void writePart(
MultipartWriter & writer,
const Part & part
) const;
static const std::string CTE_7BIT;
static const std::string CTE_8BIT;
static const std::string CTE_BASE64;
static const std::string CTE_QUOTED_PRINTABLE;
static const std::string EMPTY_HEADER;
static const std::string HEADER_BCC;
static const std::string HEADER_CC;
static const std::string HEADER_CONTENT_DISPOSITION;
static const std::string HEADER_CONTENT_TRANSFER_ENCODING;
static const std::string HEADER_CONTENT_TYPE;
static const std::string HEADER_DATE;
static const std::string HEADER_FROM;
static const std::string HEADER_MIME_VERSION;
static const std::string HEADER_SUBJECT;
static const std::string HEADER_TO;
static const std::string TEXT_PLAIN;