public class

InternetAddress

extends Address
implements Cloneable
java.lang.Object
   ↳ com.google.code.javax.mail.Address
     ↳ com.google.code.javax.mail.internet.InternetAddress

Class Overview

This class represents an Internet email address using the syntax of RFC822. Typical address syntax is of the form "user@host.domain" or "Personal Name <user@host.domain>".

Summary

Constants
long serialVersionUID
String specialsNoDot
String specialsNoDotNoAt
[Expand]
Inherited Constants
From class com.google.code.javax.mail.Address
Fields
protected String address
protected String encodedPersonal The RFC 2047 encoded version of the personal name.
private static final boolean ignoreBogusGroupName
protected String personal The personal name.
private static final String rfc822phrase
Public Constructors
InternetAddress()
Default constructor.
InternetAddress(String address)
Constructor.
InternetAddress(String address, boolean strict)
Parse the given string and create an InternetAddress.
InternetAddress(String address, String personal)
Construct an InternetAddress given the address and personal name.
InternetAddress(String address, String personal, String charset)
Construct an InternetAddress given the address and personal name.
Public Methods
Object clone()
Return a copy of this InternetAddress object.
boolean equals(Object a)
The equality operator.
String getAddress()
Get the email address.
InternetAddress[] getGroup(boolean strict)
Return the members of a group address.
static InternetAddress getLocalAddress(Session session)
Return an InternetAddress object representing the current user.
String getPersonal()
Get the personal name.
String getType()
Return the type of this address.
int hashCode()
Compute a hash code for the address.
boolean isGroup()
Indicates whether this address is an RFC 822 group address.
static InternetAddress[] parse(String addresslist)
Parse the given comma separated sequence of addresses into InternetAddress objects.
static InternetAddress[] parse(String addresslist, boolean strict)
Parse the given sequence of addresses into InternetAddress objects.
static InternetAddress[] parseHeader(String addresslist, boolean strict)
Parse the given sequence of addresses into InternetAddress objects.
void setAddress(String address)
Set the email address.
void setPersonal(String name)
Set the personal name.
void setPersonal(String name, String charset)
Set the personal name.
static String toString(Address[] addresses, int used)
Convert the given array of InternetAddress objects into a comma separated sequence of address strings.
String toString()
Convert this address into a RFC 822 / RFC 2047 encoded address.
static String toString(Address[] addresses)
Convert the given array of InternetAddress objects into a comma separated sequence of address strings.
String toUnicodeString()
Returns a properly formatted address (RFC 822 syntax) of Unicode characters.
void validate()
Validate that this address conforms to the syntax rules of RFC 822.
[Expand]
Inherited Methods
From class com.google.code.javax.mail.Address
From class java.lang.Object

Constants

private static final long serialVersionUID

Constant Value: -7507595530758302903 (0x97cfa9a447d75349)

private static final String specialsNoDot

Constant Value: "()<>,;:\"[]@"

private static final String specialsNoDotNoAt

Constant Value: "()<>,;:\"[]"

Fields

protected String address

protected String encodedPersonal

The RFC 2047 encoded version of the personal name.

This field and the personal field track each other, so if a subclass sets one of these fields directly, it should set the other to null, so that it is suitably recomputed.

private static final boolean ignoreBogusGroupName

protected String personal

The personal name.

private static final String rfc822phrase

Public Constructors

public InternetAddress ()

Default constructor.

public InternetAddress (String address)

Constructor.

Parse the given string and create an InternetAddress. See the parse method for details of the parsing. The address is parsed using "strict" parsing. This constructor does not perform the additional syntax checks that the InternetAddress(String address, boolean strict) constructor does when strict is true. This constructor is equivalent to InternetAddress(address, false).

Parameters
address The address in RFC822 format
Throws
AddressException if the parse failed

public InternetAddress (String address, boolean strict)

Parse the given string and create an InternetAddress. If strict is false, the detailed syntax of the address isn't checked.

Parameters
address The address in RFC822 format
strict Enforce RFC822 syntax
Throws
AddressException if the parse failed

public InternetAddress (String address, String personal)

Construct an InternetAddress given the address and personal name. The address is assumed to be a syntactically valid RFC822 address.

Parameters
address The address in RFC822 format
personal The personal name
Throws
UnsupportedEncodingException

public InternetAddress (String address, String personal, String charset)

Construct an InternetAddress given the address and personal name. The address is assumed to be a syntactically valid RFC822 address.

Parameters
address The address in RFC822 format
personal The personal name
charset The MIME charset for the name
Throws
UnsupportedEncodingException

Public Methods

public Object clone ()

Return a copy of this InternetAddress object.

public boolean equals (Object a)

The equality operator.

Parameters
a Address object

public String getAddress ()

Get the email address.

Returns
  • email address

public InternetAddress[] getGroup (boolean strict)

Return the members of a group address. A group may have zero, one, or more members. If this address is not a group, null is returned. The strict parameter controls whether the group list is parsed using strict RFC 822 rules or not. The parsing is done using the parseHeader method.

Parameters
strict
Returns
  • array of InternetAddress objects, or null
Throws
AddressException if the group list can't be parsed

public static InternetAddress getLocalAddress (Session session)

Return an InternetAddress object representing the current user. The entire email address may be specified in the "mail.from" property. If not set, the "mail.user" and "mail.host" properties are tried. If those are not set, the "user.name" property and InetAddress.getLocalHost method are tried. Security exceptions that may occur while accessing this information are ignored. If it is not possible to determine an email address, null is returned.

Parameters
session Session object used for property lookup
Returns
  • current user's email address

public String getPersonal ()

Get the personal name. If the name is encoded as per RFC 2047, it is decoded and converted into Unicode. If the decoding or conversion fails, the raw data is returned as is.

Returns
  • personal name

public String getType ()

Return the type of this address. The type of an InternetAddress is "rfc822".

Returns
  • address type

public int hashCode ()

Compute a hash code for the address.

public boolean isGroup ()

Indicates whether this address is an RFC 822 group address. Note that a group address is different than the mailing list addresses supported by most mail servers. Group addresses are rarely used; see RFC 822 for details.

Returns
  • true if this address represents a group

public static InternetAddress[] parse (String addresslist)

Parse the given comma separated sequence of addresses into InternetAddress objects. Addresses must follow RFC822 syntax.

Parameters
addresslist Comma separated address strings
Returns
  • array of InternetAddress objects
Throws
AddressException if the parse failed

public static InternetAddress[] parse (String addresslist, boolean strict)

Parse the given sequence of addresses into InternetAddress objects. If strict is false, simple email addresses separated by spaces are also allowed. If strict is true, many (but not all) of the RFC822 syntax rules are enforced. In particular, even if strict is true, addresses composed of simple names (with no "@domain" part) are allowed. Such "illegal" addresses are not uncommon in real messages.

Non-strict parsing is typically used when parsing a list of mail addresses entered by a human. Strict parsing is typically used when parsing address headers in mail messages.

Parameters
addresslist Comma separated address strings
strict Enforce RFC822 syntax
Returns
  • array of InternetAddress objects
Throws
AddressException if the parse failed

public static InternetAddress[] parseHeader (String addresslist, boolean strict)

Parse the given sequence of addresses into InternetAddress objects. If strict is false, the full syntax rules for individual addresses are not enforced. If strict is true, many (but not all) of the RFC822 syntax rules are enforced.

To better support the range of "invalid" addresses seen in real messages, this method enforces fewer syntax rules than the parse method when the strict flag is false and enforces more rules when the strict flag is true. If the strict flag is false and the parse is successful in separating out an email address or addresses, the syntax of the addresses themselves is not checked.

Parameters
addresslist Comma separated address strings
strict Enforce RFC822 syntax
Returns
  • array of InternetAddress objects
Throws
AddressException if the parse failed

public void setAddress (String address)

Set the email address.

Parameters
address Email address

public void setPersonal (String name)

Set the personal name. If the name contains non US-ASCII characters, then the name will be encoded using the platform's default charset. If the name contains only US-ASCII characters, no encoding is done and the name is used as is.

Parameters
name Personal name
Throws
UnsupportedEncodingException if the charset encoding fails.

public void setPersonal (String name, String charset)

Set the personal name. If the name contains non US-ASCII characters, then the name will be encoded using the specified charset as per RFC 2047. If the name contains only US-ASCII characters, no encoding is done and the name is used as is.

Parameters
name Personal name
charset MIME charset to be used to encode the name as per RFC 2047
Throws
UnsupportedEncodingException if the charset encoding fails.

public static String toString (Address[] addresses, int used)

Convert the given array of InternetAddress objects into a comma separated sequence of address strings. The resulting string contains only US-ASCII characters, and hence is mail-safe.

The 'used' parameter specifies the number of character positions already taken up in the field into which the resulting address sequence string is to be inserted. It is used to determine the line-break positions in the resulting address sequence string.

Parameters
addresses Array of InternetAddress objects
used Number of character positions already used, in the field into which the address string is to be inserted.
Returns
  • comma separated string of addresses

public String toString ()

Convert this address into a RFC 822 / RFC 2047 encoded address. The resulting string contains only US-ASCII characters, and hence is mail-safe.

Returns
  • possibly encoded address string

public static String toString (Address[] addresses)

Convert the given array of InternetAddress objects into a comma separated sequence of address strings. The resulting string contains only US-ASCII characters, and hence is mail-safe.

Parameters
addresses Array of InternetAddress objects
Returns
  • comma separated string of addresses

public String toUnicodeString ()

Returns a properly formatted address (RFC 822 syntax) of Unicode characters.

Returns
  • Unicode address string

public void validate ()

Validate that this address conforms to the syntax rules of RFC 822. The current implementation checks many, but not all, syntax rules. Note that even though the syntax of the address may be correct, there's no guarantee that a mailbox of that name exists.

Throws
AddressException if the address isn't valid.