gnu.inet.smtp

Class SMTPConnection


public class SMTPConnection
extends java.lang.Object

An SMTP client. This implements RFC 2821.

Version:
$Revision: 1.15 $ $Date: 2004/08/07 14:39:46 $

Author:
Chris Burdess

Field Summary

protected static int
AMBIGUOUS
protected static java.lang.String
AUTH
protected static java.lang.String
DATA
static int
DEFAULT_PORT
The default SMTP port.
protected static java.lang.String
EHLO
protected static java.lang.String
EXPN
protected static java.lang.String
FINISH_DATA
protected static java.lang.String
HELO
protected static java.lang.String
HELP
protected static int
INFO
protected static java.lang.String
MAIL_FROM
protected static java.lang.String
NOOP
protected static int
OK
protected static int
OK_NOT_LOCAL
protected static int
OK_UNVERIFIED
protected static java.lang.String
QUIT
protected static java.lang.String
RCPT_TO
protected static int
READY
protected static java.lang.String
RSET
protected static int
SEND_DATA
protected static java.lang.String
SP
protected static java.lang.String
STARTTLS
protected static java.lang.String
VRFY
protected boolean
continuation
If true, there are more responses to read.
protected boolean
debug
If true, log events.
protected java.lang.String
greeting
The greeting message given by the server.
protected LineInputStream
in
The input stream used to read responses from the server.
protected CRLFOutputStream
out
The output stream used to send commands to the server.
protected java.lang.String
response
The last response message received from the server.
protected java.net.Socket
socket
The underlying socket used for communicating with the server.

Constructor Summary

SMTPConnection(java.lang.String host)
Creates a new connection to the specified host, using the default SMTP port.
SMTPConnection(java.lang.String host, int port)
Creates a new connection to the specified host, using the specified port.
SMTPConnection(java.lang.String host, int port, int connectionTimeout, int timeout, boolean debug)
Creates a new connection to the specified host, using the specified port.

Method Summary

boolean
authenticate(java.lang.String mechanism, java.lang.String username, java.lang.String password)
Authenticates the connection using the specified SASL mechanism, username, and password.
java.io.OutputStream
data()
Requests an output stream to write message data to.
java.util.List
ehlo(java.lang.String hostname)
Issues an EHLO command.
java.util.List
expn(java.lang.String address)
Returns a list of valid possibilities for the specified mailing list, or null on failure.
boolean
finishData()
Completes the DATA procedure.
protected int
getAllResponses()
Returns the next response from the server.
java.lang.String
getGreeting()
Returns the server greeting message.
java.lang.String
getLastResponse()
Returns the text of the last response received from the server.
protected int
getResponse()
Returns the next response from the server.
boolean
helo(java.lang.String hostname)
Issues a HELO command.
java.util.List
help(java.lang.String arg)
Returns some useful information about the specified parameter.
boolean
mailFrom(java.lang.String reversePath, ParameterList parameters)
Execute a MAIL command.
void
noop()
Issues a NOOP command.
void
quit()
Close the connection to the server.
boolean
rcptTo(java.lang.String forwardPath, ParameterList parameters)
Execute a RCPT command.
void
rset()
Aborts the current mail transaction.
protected void
send(java.lang.String command)
Send the specified command string to the server.
boolean
starttls()
Negotiate TLS over the current connection.
boolean
starttls(javax.net.ssl.TrustManager tm)
Negotiate TLS over the current connection.
java.util.List
vrfy(java.lang.String address)
Returns a list of valid possibilities for the specified address, or null on failure.

Field Details

AMBIGUOUS

protected static final int AMBIGUOUS

Field Value:
553


AUTH

protected static final java.lang.String AUTH

Field Value:
"AUTH"


DATA

protected static final java.lang.String DATA

Field Value:
"DATA"


DEFAULT_PORT

public static final int DEFAULT_PORT
The default SMTP port.

Field Value:
25


EHLO

protected static final java.lang.String EHLO

Field Value:
"EHLO"


EXPN

protected static final java.lang.String EXPN

Field Value:
"EXPN"


FINISH_DATA

protected static final java.lang.String FINISH_DATA

Field Value:
"\n."


HELO

protected static final java.lang.String HELO

Field Value:
"HELO"


HELP

protected static final java.lang.String HELP

Field Value:
"HELP"


INFO

protected static final int INFO

Field Value:
214


MAIL_FROM

protected static final java.lang.String MAIL_FROM

Field Value:
"MAIL FROM:"


NOOP

protected static final java.lang.String NOOP

Field Value:
"NOOP"


OK

protected static final int OK

Field Value:
250


OK_NOT_LOCAL

protected static final int OK_NOT_LOCAL

Field Value:
251


OK_UNVERIFIED

protected static final int OK_UNVERIFIED

Field Value:
252


QUIT

protected static final java.lang.String QUIT

Field Value:
"QUIT"


RCPT_TO

protected static final java.lang.String RCPT_TO

Field Value:
"RCPT TO:"


READY

protected static final int READY

Field Value:
220


RSET

protected static final java.lang.String RSET

Field Value:
"RSET"


SEND_DATA

protected static final int SEND_DATA

Field Value:
354


SP

protected static final java.lang.String SP

Field Value:
" SP "


STARTTLS

protected static final java.lang.String STARTTLS

Field Value:
"STARTTLS"


VRFY

protected static final java.lang.String VRFY

Field Value:
"VRFY"


continuation

protected boolean continuation
If true, there are more responses to read.


debug

protected boolean debug
If true, log events.


greeting

protected final java.lang.String greeting
The greeting message given by the server.


in

protected LineInputStream in
The input stream used to read responses from the server.


out

protected CRLFOutputStream out
The output stream used to send commands to the server.


response

protected java.lang.String response
The last response message received from the server.


socket

protected java.net.Socket socket
The underlying socket used for communicating with the server.

Constructor Details

SMTPConnection

public SMTPConnection(java.lang.String host)
            throws java.io.IOException
Creates a new connection to the specified host, using the default SMTP port.

Parameters:
host - the server hostname


SMTPConnection

public SMTPConnection(java.lang.String host,
                      int port)
            throws java.io.IOException
Creates a new connection to the specified host, using the specified port.

Parameters:
host - the server hostname
port - the port to connect to


SMTPConnection

public SMTPConnection(java.lang.String host,
                      int port,
                      int connectionTimeout,
                      int timeout,
                      boolean debug)
            throws java.io.IOException
Creates a new connection to the specified host, using the specified port.

Parameters:
host - the server hostname
port - the port to connect to
connectionTimeout - the connection timeout in milliseconds
timeout - the I/O timeout in milliseconds
debug - whether to log progress

Method Details

authenticate

public boolean authenticate(java.lang.String mechanism,
                            java.lang.String username,
                            java.lang.String password)
            throws java.io.IOException
Authenticates the connection using the specified SASL mechanism, username, and password.

Parameters:
mechanism - a SASL authentication mechanism, e.g. LOGIN, PLAIN, CRAM-MD5, GSSAPI
username - the authentication principal
password - the authentication credentials

Returns:
true if authentication was successful, false otherwise


data

public java.io.OutputStream data()
            throws java.io.IOException
Requests an output stream to write message data to. When the entire message has been written to the stream, the flush method must be called on the stream. Until then no further methods should be called on the connection. Immediately after this procedure is complete, finishData must be called to complete the transfer and determine its success.

Returns:
a stream for writing messages to


ehlo

public java.util.List ehlo(java.lang.String hostname)
            throws java.io.IOException
Issues an EHLO command. If successful, returns a list of the SMTP extensions supported by the server. Otherwise returns null, and HELO should be called.

Parameters:
hostname - the local host name


expn

public java.util.List expn(java.lang.String address)
            throws java.io.IOException
Returns a list of valid possibilities for the specified mailing list, or null on failure.

Parameters:
address - a mailing list name


finishData

public boolean finishData()
            throws java.io.IOException
Completes the DATA procedure.

Returns:
true id transfer was successful, false otherwise

See Also:
data()


getAllResponses

protected int getAllResponses()
            throws java.io.IOException
Returns the next response from the server. If the response is a continuation, continues to read responses until continuation ceases. If a different response code from the first is encountered, this causes a protocol exception.


getGreeting

public java.lang.String getGreeting()
Returns the server greeting message.


getLastResponse

public java.lang.String getLastResponse()
Returns the text of the last response received from the server.


getResponse

protected int getResponse()
            throws java.io.IOException
Returns the next response from the server.


helo

public boolean helo(java.lang.String hostname)
            throws java.io.IOException
Issues a HELO command.

Parameters:
hostname - the local host name


help

public java.util.List help(java.lang.String arg)
            throws java.io.IOException
Returns some useful information about the specified parameter. Typically this is a command.

Parameters:
arg - the context of the query, or null for general information

Returns:
a list of possibly useful information, or null if the command failed.


mailFrom

public boolean mailFrom(java.lang.String reversePath,
                        ParameterList parameters)
            throws java.io.IOException
Execute a MAIL command.

Parameters:
reversePath - the source mailbox (from address)
parameters - optional ESMTP parameters

Returns:
true if accepted, false otherwise


noop

public void noop()
            throws java.io.IOException
Issues a NOOP command. This does nothing, but can be used to keep the connection alive.


quit

public void quit()
            throws java.io.IOException
Close the connection to the server.


rcptTo

public boolean rcptTo(java.lang.String forwardPath,
                      ParameterList parameters)
            throws java.io.IOException
Execute a RCPT command.

Parameters:
forwardPath - the forward-path (recipient address)
parameters - optional ESMTP parameters

Returns:
true if successful, false otherwise


rset

public void rset()
            throws java.io.IOException
Aborts the current mail transaction.


send

protected void send(java.lang.String command)
            throws java.io.IOException
Send the specified command string to the server.

Parameters:
command - the command to send


starttls

public boolean starttls()
            throws java.io.IOException
Negotiate TLS over the current connection. This depends on many features, such as the JSSE classes being in the classpath. Returns true if successful, false otherwise.


starttls

public boolean starttls(javax.net.ssl.TrustManager tm)
            throws java.io.IOException
Negotiate TLS over the current connection. This depends on many features, such as the JSSE classes being in the classpath. Returns true if successful, false otherwise.

Parameters:
tm - the custom trust manager to use


vrfy

public java.util.List vrfy(java.lang.String address)
            throws java.io.IOException
Returns a list of valid possibilities for the specified address, or null on failure.

Parameters:
address - a mailbox, or real name and mailbox


© Copyright 2003 The Free Software Foundation, all rights reserved