mail::emailAddress — An E-mail address
#include <libmail/rfcaddr.H>
mail::emailAddress address;
bool errflag;
address.setDisplayName("Jóse Smith", "iso-8859-1");
address.setDisplayAddr("josesmith@example.com", "utf-8");
std::string addr=address.getDisplayAddr("utf-8");
std::string addr=address.getDisplayAddr("utf-8", errflag);
std::string name=address.getDisplayName("utf-8");
std::string name=address.getDisplayName("utf-8", errflag);
address.setAddr(addr);
address.setDisplayName(name, "utf-8");
mail::emailAddress is a
subclass of mail::address
that defines four new methods: getDisplayName()
, setDisplayName()
, getDisplayAddr()
and setDisplayAddr()
, which retrieve or set the
name and the address components of an E-mail address
specified in a native character set. mail::emailAddress can be constructed
from an existing mail::address; or, the default
constructor initializes an empty address, then use
setDisplayName()
and
setDisplayAddr()
to set the
address structure. setDisplayName()
and setDisplayAddr()
return an empty string if
the display name or address was succesfully mapped from the
native character, or an error message.
The overloaded methods that take a boolean flag will initialize it to indicate if the address contains characters that do not exist in the specified character set.
Non-Latin characters in the name component use MIME
encoding. Passing the name component to setDisplayName()
MIME-encodes it using RFC
2047 and stores the encoded name in the mail::address superclass. setDisplayAddr()
encoded non-Latin
characters in the domain portion of the address using IDNA
encoding. getDisplayName()
and
getDisplayAddr()
retrieve the
name or the address portion from the mail::address superclass, and decode it
into the native character set, accordingly.
For most purposes, using mail::emailAddress is preferrable to
using mail::address.
mail::address's getName()
, setName()
, getAddr()
and setAddr()
methods deal with the raw,
MIME-encoded format of E-mail addresses. This structure lets
the application deal with human-readable representation of
the email address.
Convert a native name to its MIME-encoded format by using
setDisplayName()
followed by
getName()
. Similarly, decode a
MIME-encoded name by using setName()
followed by getDisplayName()
.
Convert an email address to its IDNA-encoded format by
using setDisplayAddr()
followed
by getAddr()
. Similarly, decode
an IDNA-encoded name by using setAddr()
followed by getDisplayAddr()
.
The toString
and
fromString
methods are
templates, and may be used with a vector of mail::emailAddress or mail::address objects. The two classes
are completely interchangable. A mail::emailAddress object may be assigned
or converted to a mail::address, and vice-versa.