| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <!-- |
| |
| DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
| |
| Copyright (c) 1997-2015 Oracle and/or its affiliates. All rights reserved. |
| |
| The contents of this file are subject to the terms of either the GNU |
| General Public License Version 2 only ("GPL") or the Common Development |
| and Distribution License("CDDL") (collectively, the "License"). You |
| may not use this file except in compliance with the License. You can |
| obtain a copy of the License at |
| https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html |
| or packager/legal/LICENSE.txt. See the License for the specific |
| language governing permissions and limitations under the License. |
| |
| When distributing the software, include this License Header Notice in each |
| file and include the License file at packager/legal/LICENSE.txt. |
| |
| GPL Classpath Exception: |
| Oracle designates this particular file as subject to the "Classpath" |
| exception as provided by Oracle in the GPL Version 2 section of the License |
| file that accompanied this code. |
| |
| Modifications: |
| If applicable, add the following below the License Header, with the fields |
| enclosed by brackets [] replaced by your own identifying information: |
| "Portions Copyright [year] [name of copyright owner]" |
| |
| Contributor(s): |
| If you wish your version of this file to be governed by only the CDDL or |
| only the GPL Version 2, indicate your decision by adding "[Contributor] |
| elects to include this software in this distribution under the [CDDL or GPL |
| Version 2] license." If you don't indicate a single choice of license, a |
| recipient has the option to distribute your version of this file under |
| either the CDDL, the GPL Version 2 or to extend the choice of license to |
| its licensees as provided above. However, if you add GPL Version 2 code |
| and therefore, elected the GPL Version 2 license, then the option applies |
| only if the new code is made subject to such option by the copyright |
| holder. |
| |
| --> |
| |
| </HEAD> |
| <BODY BGCOLOR="white"> |
| |
| The JavaMail<sup><font size="-2">TM</font></sup> API |
| provides classes that model a mail system. |
| The <code>javax.mail</code> package defines classes that are common to |
| all mail systems. |
| The <code>javax.mail.internet</code> package defines classes that are specific |
| to mail systems based on internet standards such as MIME, SMTP, POP3, and IMAP. |
| The JavaMail API includes the <code>javax.mail</code> package and subpackages. |
| <P> |
| For an overview of the JavaMail API, read the |
| <A HREF="http://javamail.java.net/nonav/docs/JavaMail-1.5.pdf" TARGET="_top"> |
| JavaMail specification</A>. |
| <P> |
| The code to send a plain text message can be as simple as the following: |
| <PRE> |
| Properties props = new Properties(); |
| props.put("mail.smtp.host", "my-mail-server"); |
| Session session = Session.getInstance(props, null); |
| |
| try { |
| MimeMessage msg = new MimeMessage(session); |
| msg.setFrom("me@example.com"); |
| msg.setRecipients(Message.RecipientType.TO, |
| "you@example.com"); |
| msg.setSubject("JavaMail hello world example"); |
| msg.setSentDate(new Date()); |
| msg.setText("Hello, world!\n"); |
| Transport.send(msg, "me@example.com", "my-password"); |
| } catch (MessagingException mex) { |
| System.out.println("send failed, exception: " + mex); |
| } |
| </PRE> |
| The JavaMail download bundle contains many more complete examples |
| in the "demo" directory. |
| <P> |
| Don't forget to see the |
| <A HREF="http://www.oracle.com/technetwork/java/javamail/faq/" TARGET="_top"> |
| JavaMail API FAQ</A> |
| for answers to the most common questions. |
| The <A HREF="http://www.oracle.com/technetwork/java/javamail/" TARGET="_top"> |
| JavaMail web site</A> |
| contains many additional resources. |
| <P> |
| <A NAME="properties"> |
| <H4>Properties</H4> |
| </A> |
| The JavaMail API supports the following standard properties, |
| which may be set in the <code>Session</code> object, or in the |
| <code>Properties</code> object used to create the <code>Session</code> object. |
| The properties are always set as strings; the Type column describes |
| how the string is interpreted. For example, use |
| <PRE> |
| props.put("mail.debug", "true"); |
| </PRE> |
| to set the <code>mail.debug</code> property, which is of type boolean. |
| <P> |
| <TABLE BORDER> |
| <TR> |
| <TH>Name</TH> |
| <TH>Type</TH> |
| <TH>Description</TH> |
| </TR> |
| |
| <A NAME="mail.debug"></A> |
| <TR id="mail.debug"> |
| <TD>mail.debug</TD> |
| <TD>boolean</TD> |
| <TD> |
| The initial debug mode. |
| Default is false. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.from"></A> |
| <TR id="mail.from"> |
| <TD>mail.from</TD> |
| <TD>String</TD> |
| <TD> |
| The return email address of the current user, used by the |
| <code>InternetAddress</code> method <code>getLocalAddress</code>. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.mime.address.strict"></A> |
| <TR id="mail.mime.address.strict"> |
| <TD>mail.mime.address.strict</TD> |
| <TD>boolean</TD> |
| <TD> |
| The MimeMessage class uses the <code>InternetAddress</code> method |
| <code>parseHeader</code> to parse headers in messages. This property |
| controls the strict flag passed to the <code>parseHeader</code> |
| method. The default is true. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.host"></A> |
| <TR id="mail.host"> |
| <TD>mail.host</TD> |
| <TD>String</TD> |
| <TD> |
| The default host name of the mail server for both Stores and Transports. |
| Used if the <code>mail.<i>protocol</i>.host</code> property isn't set. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.store.protocol"></A> |
| <TR id="mail.store.protocol"> |
| <TD>mail.store.protocol</TD> |
| <TD>String</TD> |
| <TD> |
| Specifies the default message access protocol. The |
| <code>Session</code> method <code>getStore()</code> returns a Store |
| object that implements this protocol. By default the first Store |
| provider in the configuration files is returned. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.transport.protocol"></A> |
| <TR id="mail.transport.protocol"> |
| <TD>mail.transport.protocol</TD> |
| <TD>String</TD> |
| <TD> |
| Specifies the default message transport protocol. The |
| <code>Session</code> method <code>getTransport()</code> returns a Transport |
| object that implements this protocol. By default the first Transport |
| provider in the configuration files is returned. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.user"></A> |
| <TR id="mail.user"> |
| <TD>mail.user</TD> |
| <TD>String</TD> |
| <TD> |
| The default user name to use when connecting to the mail server. |
| Used if the <code>mail.<i>protocol</i>.user</code> property isn't set. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.protocol.class"></A> |
| <TR id="mail.protocol.class"> |
| <TD>mail.<i>protocol</i>.class</TD> |
| <TD>String</TD> |
| <TD> |
| Specifies the fully qualified class name of the provider for the |
| specified protocol. Used in cases where more than one provider |
| for a given protocol exists; this property can be used to specify |
| which provider to use by default. The provider must still be listed |
| in a configuration file. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.protocol.host"></A> |
| <TR id="mail.protocol.host"> |
| <TD>mail.<i>protocol</i>.host</TD> |
| <TD>String</TD> |
| <TD> |
| The host name of the mail server for the specified protocol. |
| Overrides the <code>mail.host</code> property. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.protocol.port"></A> |
| <TR id="mail.protocol.port"> |
| <TD>mail.<i>protocol</i>.port</TD> |
| <TD>int</TD> |
| <TD> |
| The port number of the mail server for the specified protocol. |
| If not specified the protocol's default port number is used. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.protocol.user"></A> |
| <TR id="mail.protocol.user"> |
| <TD>mail.<i>protocol</i>.user</TD> |
| <TD>String</TD> |
| <TD> |
| The user name to use when connecting to mail servers |
| using the specified protocol. |
| Overrides the <code>mail.user</code> property. |
| </TD> |
| </TR> |
| |
| </TABLE> |
| |
| <P> |
| The following properties are supported by the reference implementation (RI) of |
| JavaMail, but are not currently a required part of the specification. |
| The names, types, defaults, and semantics of these properties may |
| change in future releases. |
| <P> |
| <TABLE BORDER> |
| <TR> |
| <TH>Name</TH> |
| <TH>Type</TH> |
| <TH>Description</TH> |
| </TR> |
| |
| <A NAME="mail.debug.auth"></A> |
| <TR id="mail.debug.auth"> |
| <TD>mail.debug.auth</TD> |
| <TD>boolean</TD> |
| <TD> |
| Include protocol authentication commands (including usernames and passwords) |
| in the debug output. |
| Default is false. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.transport.protocol.address-type"></A> |
| <TR id="mail.transport.protocol.address-type"> |
| <TD>mail.transport.protocol.<i>address-type</i></TD> |
| <TD>String</TD> |
| <TD> |
| Specifies the default message transport protocol for the specified address type. |
| The <code>Session</code> method <code>getTransport(Address)</code> returns a |
| Transport object that implements this protocol when the address is of the |
| specified type (e.g., "rfc822" for standard internet addresses). |
| By default the first Transport configured for that address type is used. |
| This property can be used to override the behavior of the |
| {@link javax.mail.Transport#send send} method of the |
| {@link javax.mail.Transport Transport} class so that (for example) the "smtps" |
| protocol is used instead of the "smtp" protocol by setting the property |
| <code>mail.transport.protocol.rfc822</code> to <code>"smtps"</code>. |
| </TD> |
| </TR> |
| |
| <A NAME="mail.event.scope"></A> |
| <TR id="mail.event.scope"> |
| <TD>mail.event.scope</TD> |
| <TD>String</TD> |
| <TD> |
| Controls the scope of events. (See the javax.mail.event package.) |
| By default, a separate event queue and thread is used for events for each |
| Store, Transport, or Folder. |
| If this property is set to "session", all such events are put in a single |
| event queue processed by a single thread for the current session. |
| If this property is set to "application", all such events are put in a single |
| event queue processed by a single thread for the current application. |
| (Applications are distinguished by their context class loader.) |
| </TD> |
| </TR> |
| |
| <A NAME="mail.event.executor"></A> |
| <TR id="mail.event.executor"> |
| <TD>mail.event.executor</TD> |
| <TD>java.util.concurrent.Executor</TD> |
| <TD> |
| By default, a new Thread is created for each event queue. |
| This thread is used to call the listeners for these events. |
| If this property is set to an instance of an Executor, the |
| Executor.execute method is used to run the event dispatcher |
| for an event queue. The event dispatcher runs until the |
| event queue is no longer in use. |
| </TD> |
| </TR> |
| |
| </TABLE> |
| |
| <P> |
| The JavaMail API also supports several System properties; |
| see the {@link javax.mail.internet} package documentation |
| for details. |
| |
| <P> |
| The JavaMail reference |
| implementation includes protocol providers in subpackages of |
| <code>com.sun.mail</code>. Note that the APIs to these protocol |
| providers are not part of the standard JavaMail API. Portable |
| programs will not use these APIs. |
| <P> |
| Nonportable programs may use the APIs of the protocol providers |
| by (for example) casting a returned <code>Folder</code> object to a |
| <code>com.sun.mail.imap.IMAPFolder</code> object. Similarly for |
| <code>Store</code> and <code>Message</code> objects returned from the |
| standard JavaMail APIs. |
| <P> |
| The protocol providers also support properties that are specific to |
| those providers. The package documentation for the |
| {@link com.sun.mail.imap IMAP}, {@link com.sun.mail.pop3 POP3}, |
| and {@link com.sun.mail.smtp SMTP} packages provide details. |
| <P> |
| In addition to printing debugging output as controlled by the |
| {@link javax.mail.Session Session} configuration, the current |
| implementation of classes in this package log the same information using |
| {@link java.util.logging.Logger} as described in the following table: |
| <P> |
| <TABLE BORDER> |
| <TR> |
| <TH>Logger Name</TH> |
| <TH>Logging Level</TH> |
| <TH>Purpose</TH> |
| </TR> |
| |
| <TR> |
| <TD>javax.mail</TD> |
| <TD>CONFIG</TD> |
| <TD>Configuration of the Session</TD> |
| </TR> |
| |
| <TR> |
| <TD>javax.mail</TD> |
| <TD>FINE</TD> |
| <TD>General debugging output</TD> |
| </TR> |
| </TABLE> |
| |
| </BODY> |
| </HTML> |