Package javax.mail

## Class Transport

- java.lang.Object
- - javax.mail.Service
  - - javax.mail.Transport

All Implemented Interfaces:
  `java.lang.AutoCloseable`

Direct Known Subclasses:
  `SMTPTransport`

    public abstract class Transport
    extends Service

An abstract class that models a message transport. Subclasses provide actual implementations.

Note that `Transport` extends the `Service` class, which provides many common methods for naming transports, connecting to transports, and listening to connection events.

Author:
  John Mani, Max Spivak, Bill Shannon
See Also:
  `Service`, `ConnectionEvent`, `TransportEvent`

### Field Summary

### Fields inherited from class javax.mail.Service

`debug, session, url`

### Constructor Summary

Constructors
`Transport​(Session session, URLName urlname)` Constructor.

### Method Summary

All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
`void` `addTransportListener​(TransportListener l)` Add a listener for Transport events.
`protected void` `notifyTransportListeners​(int type, Address[] validSent, Address[] validUnsent, Address[] invalid, Message msg)` Notify all TransportListeners.
`void` `removeTransportListener​(TransportListener l)` Remove a listener for Transport events.
`static void` `send​(Message msg)` Send a message.
`static void` `send​(Message msg, java.lang.String user, java.lang.String password)` Send a message.
`static void` `send​(Message msg, Address[] addresses)` Send the message to the specified addresses, ignoring any recipients specified in the message itself.
`static void` `send​(Message msg, Address[] addresses, java.lang.String user, java.lang.String password)` Send the message to the specified addresses, ignoring any recipients specified in the message itself.
`abstract void` `sendMessage​(Message msg, Address[] addresses)` Send the Message to the specified list of addresses.

### Methods inherited from class javax.mail.Service

`addConnectionListener, close, connect, connect, connect, connect, finalize, getURLName, isConnected, notifyConnectionListeners, protocolConnect, queueEvent, removeConnectionListener, setConnected, setURLName, toString`

### Methods inherited from class java.lang.Object

`clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### Transport

    public Transport​(Session session,
                     URLName urlname)

Constructor.

Parameters:
  `session` - Session object for this Transport.
  `urlname` - URLName object to be used for this Transport

### Method Detail

#### send

    public static void send​(Message msg)
                     throws MessagingException

Send a message. The message will be sent to all recipient addresses specified in the message (as returned from the `Message` method `getAllRecipients`), using message transports appropriate to each address. The `send` method calls the `saveChanges` method on the message before sending it.

If any of the recipient addresses is detected to be invalid by the Transport during message submission, a SendFailedException is thrown. Clients can get more detail about the failure by examining the exception. Whether or not the message is still sent successfully to any valid addresses depends on the Transport implementation. See SendFailedException for more details. Note also that success does not imply that the message was delivered to the ultimate recipient, as failures may occur in later stages of delivery. Once a Transport accepts a message for delivery to a recipient, failures that occur later should be reported to the user via another mechanism, such as returning the undeliverable message.

In typical usage, a SendFailedException reflects an error detected by the server. The details of the SendFailedException will usually contain the error message from the server (such as an SMTP error message). An address may be detected as invalid for a variety of reasons - the address may not exist, the address may have invalid syntax, the address may have exceeded its quota, etc.

Note that `send` is a static method that creates and manages its own connection. Any connection associated with any Transport instance used to invoke this method is ignored and not used. This method should only be invoked using the form `Transport.send(msg);`, and should never be invoked using an instance variable.

Parameters:
  `msg` - the message to send
Throws:
  `SendFailedException` - if the message could not be sent to some or any of the recipients.
  `MessagingException` - for other failures
See Also:
  `Message.saveChanges()`, `Message.getAllRecipients()`, `send(Message, Address[])`, `SendFailedException`

#### send

    public static void send​(Message msg,
                            Address[] addresses)
                     throws MessagingException

Send the message to the specified addresses, ignoring any recipients specified in the message itself. The `send` method calls the `saveChanges` method on the message before sending it.

Parameters:
  `msg` - the message to send
  `addresses` - the addresses to which to send the message
Throws:
  `SendFailedException` - if the message could not be sent to some or any of the recipients.
  `MessagingException` - for other failures
See Also:
  `Message.saveChanges()`, `send(Message)`, `SendFailedException`

#### send

    public static void send​(Message msg,
                            java.lang.String user,
                            java.lang.String password)
                     throws MessagingException

Send a message. The message will be sent to all recipient addresses specified in the message (as returned from the `Message` method `getAllRecipients`). The `send` method calls the `saveChanges` method on the message before sending it.

Use the specified user name and password to authenticate to the mail server.

Parameters:
  `msg` - the message to send
  `user` - the user name
  `password` - this user's password
Throws:
  `SendFailedException` - if the message could not be sent to some or any of the recipients.
  `MessagingException` - for other failures
Since:
  JavaMail 1.5
See Also:
  `Message.saveChanges()`, `send(Message)`, `SendFailedException`

#### send

    public static void send​(Message msg,
                            Address[] addresses,
                            java.lang.String user,
                            java.lang.String password)
                     throws MessagingException

Send the message to the specified addresses, ignoring any recipients specified in the message itself. The `send` method calls the `saveChanges` method on the message before sending it.

Use the specified user name and password to authenticate to the mail server.

Parameters:
  `msg` - the message to send
  `addresses` - the addresses to which to send the message
  `user` - the user name
  `password` - this user's password
Throws:
  `SendFailedException` - if the message could not be sent to some or any of the recipients.
  `MessagingException` - for other failures
Since:
  JavaMail 1.5
See Also:
  `Message.saveChanges()`, `send(Message)`, `SendFailedException`

#### sendMessage

    public abstract void sendMessage​(Message msg,
                                     Address[] addresses)
                              throws MessagingException

Send the Message to the specified list of addresses. An appropriate TransportEvent indicating the delivery status is delivered to any TransportListener registered on this Transport. Also, if any of the addresses is invalid, a SendFailedException is thrown. Whether or not the message is still sent succesfully to any valid addresses depends on the Transport implementation.

Unlike the static `send` method, the `sendMessage` method does not call the `saveChanges` method on the message; the caller should do so.

Parameters:
  `msg` - The Message to be sent
  `addresses` - array of addresses to send this message to
Throws:
  `SendFailedException` - if the send failed because of invalid addresses.
  `MessagingException` - if the connection is dead or not in the connected state
See Also:
  `TransportEvent`

#### addTransportListener

    public void addTransportListener​(TransportListener l)

Add a listener for Transport events.

The default implementation provided here adds this listener to an internal list of TransportListeners.

Parameters:
  `l` - the Listener for Transport events
See Also:
  `TransportEvent`

#### removeTransportListener

    public void removeTransportListener​(TransportListener l)

Remove a listener for Transport events.

The default implementation provided here removes this listener from the internal list of TransportListeners.

Parameters:
  `l` - the listener
See Also:
  `addTransportListener(javax.mail.event.TransportListener)`

#### notifyTransportListeners

    protected void notifyTransportListeners​(int type,
                                            Address[] validSent,
                                            Address[] validUnsent,
                                            Address[] invalid,
                                            Message msg)

Notify all TransportListeners. Transport implementations are expected to use this method to broadcast TransportEvents.

The provided default implementation queues the event into an internal event queue. An event dispatcher thread dequeues events from the queue and dispatches them to the registered TransportListeners. Note that the event dispatching occurs in a separate thread, thus avoiding potential deadlock problems.

Parameters:
  `type` - the TransportEvent type
  `validSent` - valid addresses to which message was sent
  `validUnsent` - valid addresses to which message was not sent
  `invalid` - the invalid addresses
  `msg` - the message