gnu.inet.smtp
Class SMTPConnection
An SMTP client.
This implements RFC 2821.
SMTPConnection(String host) - Creates a new connection to the specified host, using the default SMTP
port.
|
SMTPConnection(String host, int port) - Creates a new connection to the specified host, using the specified
port.
|
SMTPConnection(String host, int port, int connectionTimeout, int timeout, boolean debug) - Creates a new connection to the specified host, using the specified
port.
|
boolean | authenticate(String mechanism, String username, String password) - Authenticates the connection using the specified SASL mechanism,
username, and password.
|
OutputStream | data() - Requests an output stream to write message data to.
|
List | ehlo(String hostname) - Issues an EHLO command.
|
List | expn(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.
|
String | getGreeting() - Returns the server greeting message.
|
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(String hostname) - Issues a HELO command.
|
List | help(String arg) - Returns some useful information about the specified parameter.
|
boolean | mailFrom(String reversePath, ParameterList parameters) - Execute a MAIL command.
|
void | noop() - Issues a NOOP command.
|
void | quit() - Close the connection to the server.
|
boolean | rcptTo(String forwardPath, ParameterList parameters) - Execute a RCPT command.
|
void | rset() - Aborts the current mail transaction.
|
protected void | send(String command) - Send the specified command string to the server.
|
boolean | starttls() - Negotiate TLS over the current connection.
|
boolean | starttls(TrustManager tm) - Negotiate TLS over the current connection.
|
List | vrfy(String address) - Returns a list of valid possibilities for the specified address, or
null on failure.
|
AMBIGUOUS
protected static final int AMBIGUOUS
- 553
DEFAULT_PORT
public static final int DEFAULT_PORT
The default SMTP port.
- 25
INFO
protected static final int INFO
- 214
OK
protected static final int OK
- 250
READY
protected static final int READY
- 220
SEND_DATA
protected static final int SEND_DATA
- 354
continuation
protected boolean continuation
If true, there are more responses to read.
debug
protected boolean debug
If true, log events.
greeting
protected final String greeting
The greeting message given by the server.
in
protected LineInputStream in
The input stream used to read responses from the server.
response
protected String response
The last response message received from the server.
socket
protected Socket socket
The underlying socket used for communicating with the server.
SMTPConnection
public SMTPConnection(String host)
throws IOException
Creates a new connection to the specified host, using the default SMTP
port.
host
- the server hostname
SMTPConnection
public SMTPConnection(String host,
int port)
throws IOException
Creates a new connection to the specified host, using the specified
port.
host
- the server hostnameport
- the port to connect to
SMTPConnection
public SMTPConnection(String host,
int port,
int connectionTimeout,
int timeout,
boolean debug)
throws IOException
Creates a new connection to the specified host, using the specified
port.
host
- the server hostnameport
- the port to connect toconnectionTimeout
- the connection timeout in millisecondstimeout
- the I/O timeout in millisecondsdebug
- whether to log progress
authenticate
public boolean authenticate(String mechanism,
String username,
String password)
throws IOException
Authenticates the connection using the specified SASL mechanism,
username, and password.
mechanism
- a SASL authentication mechanism, e.g. LOGIN, PLAIN,
CRAM-MD5, GSSAPIusername
- the authentication principalpassword
- the authentication credentials
- true if authentication was successful, false otherwise
data
public OutputStream data()
throws 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.
- a stream for writing messages to
ehlo
public List ehlo(String hostname)
throws 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.
hostname
- the local host name
expn
public List expn(String address)
throws IOException
Returns a list of valid possibilities for the specified mailing list,
or null on failure.
address
- a mailing list name
finishData
public boolean finishData()
throws IOException
Completes the DATA procedure.
- true id transfer was successful, false otherwise
data()
getAllResponses
protected int getAllResponses()
throws 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.
getLastResponse
public String getLastResponse()
Returns the text of the last response received from the server.
helo
public boolean helo(String hostname)
throws IOException
Issues a HELO command.
hostname
- the local host name
help
public List help(String arg)
throws IOException
Returns some useful information about the specified parameter.
Typically this is a command.
arg
- the context of the query, or null for general information
- a list of possibly useful information, or null if the command
failed.
mailFrom
public boolean mailFrom(String reversePath,
ParameterList parameters)
throws IOException
Execute a MAIL command.
reversePath
- the source mailbox(from address)parameters
- optional ESMTP parameters
- true if accepted, false otherwise
noop
public void noop()
throws IOException
Issues a NOOP command.
This does nothing, but can be used to keep the connection alive.
quit
public void quit()
throws IOException
Close the connection to the server.
rcptTo
public boolean rcptTo(String forwardPath,
ParameterList parameters)
throws IOException
Execute a RCPT command.
forwardPath
- the forward-path(recipient address)parameters
- optional ESMTP parameters
- true if successful, false otherwise
rset
public void rset()
throws IOException
Aborts the current mail transaction.
send
protected void send(String command)
throws IOException
Send the specified command string to the server.
command
- the command to send
starttls
public boolean starttls()
throws 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(TrustManager tm)
throws 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.
tm
- the custom trust manager to use
vrfy
public List vrfy(String address)
throws IOException
Returns a list of valid possibilities for the specified address, or
null on failure.
address
- a mailbox, or real name and mailbox
* SMTPConnection.java
* Copyright (C) 2003 Chris Burdess
*
* This file is part of GNU inetlib, a library.
*
* GNU inetlib is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GNU inetlib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Linking this library statically or dynamically with other modules is
* making a combined work based on this library. Thus, the terms and
* conditions of the GNU General Public License cover the whole
* combination.
*
* As a special exception, the copyright holders of this library give you
* permission to link this library with independent modules to produce an
* executable, regardless of the license terms of these independent
* modules, and to copy and distribute the resulting executable under
* terms of your choice, provided that you also meet, for each linked
* independent module, the terms and conditions of the license of that
* module. An independent module is a module which is not derived from
* or based on this library. If you modify this library, you may extend
* this exception to your version of the library, but you are not
* obliged to do so. If you do not wish to do so, delete this
* exception statement from your version.