javax.mail.internet
Class InternetAddress

java.lang.Object
  |
  +--javax.mail.Address
        |
        +--javax.mail.internet.InternetAddress

public class InternetAddress
extends Address

This class models an RFC822 address.


Field Summary
protected  java.lang.String address
           
protected  java.lang.String encodedPersonal
          The RFC 2047 encoded version of the personal name.
protected  java.lang.String personal
          The personal name.
 
Constructor Summary
InternetAddress()
          Default constructor.
InternetAddress(java.lang.String address)
          Constructor.
InternetAddress(java.lang.String address, java.lang.String personal)
          Construct an InternetAddress given the address and personal name.
InternetAddress(java.lang.String address, java.lang.String personal, java.lang.String charset)
          Construct an InternetAddress given the address and personal name.
 
Method Summary
 boolean equals(java.lang.Object a)
          The equality operator.
 java.lang.String getAddress()
          Get the email address.
static InternetAddress getLocalAddress(Session session)
          Return an InternetAddress object representing the current user.
 java.lang.String getPersonal()
          Get the personal name.
 java.lang.String getType()
          Return the type of this address.
 int hashCode()
          Compute a hash code for the address.
static InternetAddress[] parse(java.lang.String addresslist)
          Parse the given comma separated sequence of addresses into InternetAddress objects.
static InternetAddress[] parse(java.lang.String s, boolean strict)
          Parse the given sequence of addresses into InternetAddress objects.
 void setAddress(java.lang.String address)
          Set the email address.
 void setPersonal(java.lang.String name)
          Set the personal name.
 void setPersonal(java.lang.String name, java.lang.String charset)
          Set the personal name.
 java.lang.String toString()
          Convert this address into a RFC 822 / RFC 2047 encoded address.
static java.lang.String toString(Address[] addresses)
          Convert the given array of InternetAddress objects into a comma separated sequence of address strings.
static java.lang.String toString(Address[] addresses, int used)
          Convert the given array of InternetAddress objects into a comma separated sequence of address strings.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

address

protected java.lang.String address

personal

protected java.lang.String personal
The personal name.

encodedPersonal

protected java.lang.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.

Constructor Detail

InternetAddress

public InternetAddress()
Default constructor.

InternetAddress

public InternetAddress(java.lang.String address)
                throws AddressException
Constructor.

Parse the given string and create an InternetAddress.

Parameters:
address - the address in RFC822 format
Throws:
AddressException - if the parse failed

InternetAddress

public InternetAddress(java.lang.String address,
                       java.lang.String personal)
                throws java.io.UnsupportedEncodingException
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

InternetAddress

public InternetAddress(java.lang.String address,
                       java.lang.String personal,
                       java.lang.String charset)
                throws java.io.UnsupportedEncodingException
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 charset for the name
Method Detail

getType

public java.lang.String getType()
Return the type of this address. The type of an InternetAddress is "rfc822".
Overrides:
getType in class Address
Tags copied from class: Address
Returns:
address type
See Also:
InternetAddress

setAddress

public void setAddress(java.lang.String address)
Set the email address.
Parameters:
address - email address

setPersonal

public void setPersonal(java.lang.String name,
                        java.lang.String charset)
                 throws java.io.UnsupportedEncodingException
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 - charset to be used to encode the name as per RFC 2047.
Throws:
java.io.UnsupportedEncodingException - if the charset encoding fails.
See Also:
setPersonal(String)

setPersonal

public void setPersonal(java.lang.String name)
                 throws java.io.UnsupportedEncodingException
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:
java.io.UnsupportedEncodingException - if the charset encoding fails.
See Also:
setPersonal(String name, String charset)

getAddress

public java.lang.String getAddress()
Get the email address.
Returns:
email address

getPersonal

public java.lang.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 convertion fails, the raw data is returned as is.
Returns:
personal name

toString

public java.lang.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.
Overrides:
toString in class Address
Returns:
possibly encoded address string

equals

public boolean equals(java.lang.Object a)
The equality operator.
Overrides:
equals in class Address
Tags copied from class: Address
Parameters:
address - Address object

hashCode

public int hashCode()
Compute a hash code for the address.
Overrides:
hashCode in class java.lang.Object

toString

public static java.lang.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 address strings
Throws:
ClassCastException, - if any address object in the given array is not an InternetAddress objects. Note that this is a RuntimeException.

toString

public static java.lang.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. Its 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 address strings
Throws:
ClassCastException, - if any address object in the given array is not an InternetAddress objects. Note that this is a RuntimeException.

getLocalAddress

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

parse

public static InternetAddress[] parse(java.lang.String addresslist)
                               throws AddressException
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

parse

public static InternetAddress[] parse(java.lang.String s,
                                      boolean strict)
                               throws AddressException
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