Class SMTP
- Direct Known Subclasses:
SMTPClient
SMTPClient class,
derived from SMTP,
implements all the functionality required of an SMTP client. The
SMTP class is made public to provide access to various SMTP constants
and to make it easier for adventurous programmers (or those with
special needs) to interact with the SMTP protocol and implement their
own clients. A set of methods with names corresponding to the SMTP
command names are provided to facilitate this interaction.
You should keep in mind that the SMTP server may choose to prematurely
close a connection for various reasons. The SMTP class will detect a
premature SMTP server connection closing when it receives a
SMTPReply.SERVICE_NOT_AVAILABLE
response to a command.
When that occurs, the SMTP class method encountering that reply will throw
an SMTPConnectionClosedException
.
SMTPConectionClosedException
is a subclass of IOException and therefore need not be
caught separately, but if you are going to catch it separately, its
catch block must appear before the more general IOException
catch block. When you encounter an
SMTPConnectionClosedException
, you must disconnect the connection with
disconnect()
to properly clean up the system resources used by SMTP. Before
disconnecting, you may check the
last reply code and text with
getReplyCode ,
getReplyString ,
and getReplyStrings.
Rather than list it separately for each method, we mention here that
every method communicating with the server and throwing an IOException
can also throw a
MalformedServerReplyException
, which is a subclass
of IOException. A MalformedServerReplyException will be thrown when
the reply received from the server deviates enough from the protocol
specification that it cannot be interpreted in a useful manner despite
attempts to be as lenient as possible.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ProtocolCommandSupportA ProtocolCommandSupport object used to manage the registering of ProtocolCommandListeners and te firing of ProtocolCommandEvents.static final intThe default SMTP port (25).protected final StringThe encoding to use (user-settable).Fields inherited from class org.apache.commons.net.SocketClient
_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidInitiates control connections and gets initial reply.intdata()A convenience method to send the SMTP DATA command to the server, receive the reply, and return the reply code.voidCloses the connection to the SMTP server and sets to null some internal data so that the memory may be reclaimed by the garbage collector.intA convenience method to send the SMTP VRFY command to the server, receive the reply, and return the reply code.protected ProtocolCommandSupportProvide command support to super-classintgetReply()Fetches a reply from the SMTP server and returns the integer reply code.intReturns the integer value of the reply code of the last SMTP reply.Returns the entire text of the last SMTP server response exactly as it was received, including all end of line markers in NETASCII format.String[]Returns the lines of text from the last SMTP server response as an array of strings, one entry per line.intA convenience method to send the SMTP HELO command to the server, receive the reply, and return the reply code.inthelp()A convenience method to send the SMTP HELP command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP HELP command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP MAIL command to the server, receive the reply, and return the reply code.intnoop()A convenience method to send the SMTP NOOP command to the server, receive the reply, and return the reply code.intquit()A convenience method to send the SMTP QUIT command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP RCPT command to the server, receive the reply, and return the reply code.voidRemoves a ProtocolCommandListener.intrset()A convenience method to send the SMTP RSET command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP SAML command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP SEND command to the server, receive the reply, and return the reply code.intsendCommand(int command) Sends an SMTP command with no arguments to the server, waits for a reply and returns the numerical response code.intsendCommand(int command, String args) Sends an SMTP command to the server, waits for a reply and returns the numerical response code.intsendCommand(String command) Sends an SMTP command with no arguments to the server, waits for a reply and returns the numerical response code.intsendCommand(String command, String args) Sends an SMTP command to the server, waits for a reply and returns the numerical response code.intA convenience method to send the SMTP SOML command to the server, receive the reply, and return the reply code.intturn()A convenience method to send the SMTP TURN command to the server, receive the reply, and return the reply code.intA convenience method to send the SMTP VRFY command to the server, receive the reply, and return the reply code.Methods inherited from class org.apache.commons.net.SocketClient
addProtocolCommandListener, connect, connect, connect, connect, connect, connect, createCommandSupport, fireCommandSent, fireReplyReceived, getCharset, getCharsetName, getConnectTimeout, getDefaultPort, getDefaultTimeout, getKeepAlive, getLocalAddress, getLocalPort, getProxy, getReceiveBufferSize, getRemoteAddress, getRemotePort, getSendBufferSize, getServerSocketFactory, getSoLinger, getSoTimeout, getTcpNoDelay, isAvailable, isConnected, removeProtocolCommandListener, setCharset, setConnectTimeout, setDefaultPort, setDefaultTimeout, setKeepAlive, setProxy, setReceiveBufferSize, setSendBufferSize, setServerSocketFactory, setSocketFactory, setSoLinger, setSoTimeout, setTcpNoDelay, verifyRemote
-
Field Details
-
DEFAULT_PORT
The default SMTP port (25).- See Also:
-
encoding
The encoding to use (user-settable).- Since:
- 3.1 (changed from private to protected)
-
_commandSupport_
A ProtocolCommandSupport object used to manage the registering of ProtocolCommandListeners and te firing of ProtocolCommandEvents.
-
-
Constructor Details
-
SMTP
public SMTP()The default SMTP constructor. Sets the default port toDEFAULT_PORTand initializes internal data structures for saving SMTP reply information. -
SMTP
Overloaded constructor where the user may specify a default encoding.- Parameters:
encoding- the encoing to use- Since:
- 2.0
-
-
Method Details
-
_connectAction_
Initiates control connections and gets initial reply.- Overrides:
_connectAction_in classSocketClient- Throws:
IOException- (SocketException) if a problem occurs with the socket
-
disconnect
Closes the connection to the SMTP server and sets to null some internal data so that the memory may be reclaimed by the garbage collector. The reply text and code information from the last command is voided so that the memory it used may be reclaimed.- Overrides:
disconnectin classSocketClient- Throws:
IOException- If an error occurs while disconnecting.
-
sendCommand
Sends an SMTP command to the server, waits for a reply and returns the numerical response code. After invocation, for more detailed information, the actual reply text can be accessed by callinggetReplyStringorgetReplyStrings.- Parameters:
command- The text representation of the SMTP command to send.args- The arguments to the SMTP command. If this parameter is set to null, then the command is sent with no argument.- Returns:
- The integer value of the SMTP reply code returned by the server in response to the command.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
sendCommand
Sends an SMTP command to the server, waits for a reply and returns the numerical response code. After invocation, for more detailed information, the actual reply text can be accessed by callinggetReplyStringorgetReplyStrings.- Parameters:
command- The SMTPCommand constant corresponding to the SMTP command to send.args- The arguments to the SMTP command. If this parameter is set to null, then the command is sent with no argument.- Returns:
- The integer value of the SMTP reply code returned by the server in response to the command.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
sendCommand
Sends an SMTP command with no arguments to the server, waits for a reply and returns the numerical response code. After invocation, for more detailed information, the actual reply text can be accessed by callinggetReplyStringorgetReplyStrings.- Parameters:
command- The text representation of the SMTP command to send.- Returns:
- The integer value of the SMTP reply code returned by the server in response to the command.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
sendCommand
Sends an SMTP command with no arguments to the server, waits for a reply and returns the numerical response code. After invocation, for more detailed information, the actual reply text can be accessed by callinggetReplyStringorgetReplyStrings.- Parameters:
command- The SMTPCommand constant corresponding to the SMTP command to send.- Returns:
- The integer value of the SMTP reply code returned by the server in response to the command.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
getReplyCode
Returns the integer value of the reply code of the last SMTP reply. You will usually only use this method after you connect to the SMTP server to check that the connection was successful sinceconnectis of type void.- Returns:
- The integer value of the reply code of the last SMTP reply.
-
getReply
Fetches a reply from the SMTP server and returns the integer reply code. After calling this method, the actual reply text can be accessed from either callinggetReplyStringorgetReplyStrings. Only use this method if you are implementing your own SMTP client or if you need to fetch a secondary response from the SMTP server.- Returns:
- The integer value of the reply code of the fetched SMTP reply.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while receiving the server reply.
-
getReplyStrings
Returns the lines of text from the last SMTP server response as an array of strings, one entry per line. The end of line markers of each are stripped from each line.- Returns:
- The lines of text from the last SMTP response as an array.
-
getReplyString
Returns the entire text of the last SMTP server response exactly as it was received, including all end of line markers in NETASCII format.- Returns:
- The entire text from the last SMTP response as a String.
-
helo
A convenience method to send the SMTP HELO command to the server, receive the reply, and return the reply code.- Parameters:
hostname- The hostname of the sender.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
mail
A convenience method to send the SMTP MAIL command to the server, receive the reply, and return the reply code.- Parameters:
reversePath- The reverese path.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
rcpt
A convenience method to send the SMTP RCPT command to the server, receive the reply, and return the reply code.- Parameters:
forwardPath- The forward path.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
data
A convenience method to send the SMTP DATA command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
send
A convenience method to send the SMTP SEND command to the server, receive the reply, and return the reply code.- Parameters:
reversePath- The reverese path.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
soml
A convenience method to send the SMTP SOML command to the server, receive the reply, and return the reply code.- Parameters:
reversePath- The reverese path.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
saml
A convenience method to send the SMTP SAML command to the server, receive the reply, and return the reply code.- Parameters:
reversePath- The reverese path.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
rset
A convenience method to send the SMTP RSET command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
vrfy
A convenience method to send the SMTP VRFY command to the server, receive the reply, and return the reply code.- Parameters:
user- The user address to verify.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
expn
A convenience method to send the SMTP VRFY command to the server, receive the reply, and return the reply code.- Parameters:
name- The name to expand.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
help
A convenience method to send the SMTP HELP command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
help
A convenience method to send the SMTP HELP command to the server, receive the reply, and return the reply code.- Parameters:
command- The command name on which to request help.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
noop
A convenience method to send the SMTP NOOP command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
turn
A convenience method to send the SMTP TURN command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
quit
A convenience method to send the SMTP QUIT command to the server, receive the reply, and return the reply code.- Returns:
- The reply code received from the server.
- Throws:
SMTPConnectionClosedException- If the SMTP server prematurely closes the connection as a result of the client being idle or some other reason causing the server to send SMTP reply code 421. This exception may be caught either as an IOException or independently as itself.IOException- If an I/O error occurs while either sending the command or receiving the server reply.
-
removeProtocolCommandistener
Removes a ProtocolCommandListener. Delegates this incorrectly named method - removeProtocolCommandistener (note the missing "L")- to the correct methodSocketClient.removeProtocolCommandListener(org.apache.commons.net.ProtocolCommandListener)- Parameters:
listener- The ProtocolCommandListener to remove
-
getCommandSupport
Provide command support to super-class- Overrides:
getCommandSupportin classSocketClient- Returns:
- the CommandSupport instance, may be
null
-