public class SMTPSClient extends SMTPClient
setHostnameVerifier(HostnameVerifier)
or setEndpointCheckingEnabled(boolean)
(on Java 1.7+) to enable verification.Modifier and Type | Field and Description |
---|---|
private javax.net.ssl.SSLContext |
context
The context object.
|
private static java.lang.String |
DEFAULT_PROTOCOL
Default secure socket protocol name, like TLS
|
private javax.net.ssl.HostnameVerifier |
hostnameVerifier
The
HostnameVerifier to use post-TLS, default null (i.e. |
private boolean |
isImplicit
The security mode.
|
private javax.net.ssl.KeyManager |
keyManager
The
KeyManager , default null (i.e. |
private java.lang.String |
protocol
The secure socket protocol to be used, like SSL/TLS.
|
private java.lang.String[] |
protocols
The protocol versions.
|
private java.lang.String[] |
suites
The cipher suites.
|
private boolean |
tlsEndpointChecking
Use Java 1.7+ HTTPS Endpoint Identification Algorithim.
|
private javax.net.ssl.TrustManager |
trustManager
The
TrustManager implementation, default null (i.e. |
_commandSupport_, _reader, _writer, DEFAULT_PORT, encoding
_defaultPort_, _hostname_, _input_, _output_, _serverSocketFactory_, _socket_, _socketFactory_, _timeout_, connectTimeout, NETASCII_EOL
Constructor and Description |
---|
SMTPSClient()
Constructor for SMTPSClient, using
DEFAULT_PROTOCOL i.e. |
SMTPSClient(boolean implicit)
Constructor for SMTPSClient, using
DEFAULT_PROTOCOL i.e. |
SMTPSClient(boolean implicit,
javax.net.ssl.SSLContext ctx)
Constructor for SMTPSClient, using
DEFAULT_PROTOCOL i.e. |
SMTPSClient(javax.net.ssl.SSLContext context)
Constructor for SMTPSClient.
|
SMTPSClient(java.lang.String proto)
Constructor for SMTPSClient, using explicit security mode.
|
SMTPSClient(java.lang.String proto,
boolean implicit)
Constructor for SMTPSClient.
|
SMTPSClient(java.lang.String proto,
boolean implicit,
java.lang.String encoding)
Constructor for SMTPSClient.
|
Modifier and Type | Method and Description |
---|---|
protected void |
_connectAction_()
Because there are so many connect() methods,
the _connectAction_() method is provided as a means of performing
some action immediately after establishing a connection,
rather than reimplementing all of the connect() methods.
|
boolean |
execTLS()
The TLS command execution.
|
java.lang.String[] |
getEnabledCipherSuites()
Returns the names of the cipher suites which could be enabled
for use on this connection.
|
java.lang.String[] |
getEnabledProtocols()
Returns the names of the protocol versions which are currently
enabled for use on this connection.
|
javax.net.ssl.HostnameVerifier |
getHostnameVerifier()
Get the currently configured
HostnameVerifier . |
javax.net.ssl.KeyManager |
getKeyManager()
Get the
KeyManager instance. |
javax.net.ssl.TrustManager |
getTrustManager()
Get the currently configured
TrustManager . |
private void |
initSSLContext()
Performs a lazy init of the SSL context.
|
boolean |
isEndpointCheckingEnabled()
Return whether or not endpoint identification using the HTTPS algorithm
on Java 1.7+ is enabled.
|
private void |
performSSLNegotiation()
SSL/TLS negotiation.
|
void |
setEnabledCipherSuites(java.lang.String[] cipherSuites)
Controls which particular cipher suites are enabled for use on this
connection.
|
void |
setEnabledProtocols(java.lang.String[] protocolVersions)
Controls which particular protocol versions are enabled for use on this
connection.
|
void |
setEndpointCheckingEnabled(boolean enable)
Automatic endpoint identification checking using the HTTPS algorithm
is supported on Java 1.7+.
|
void |
setHostnameVerifier(javax.net.ssl.HostnameVerifier newHostnameVerifier)
Override the default
HostnameVerifier to use. |
void |
setKeyManager(javax.net.ssl.KeyManager newKeyManager)
Set a
KeyManager to use. |
void |
setTrustManager(javax.net.ssl.TrustManager newTrustManager)
Override the default
TrustManager to use. |
addRecipient, addRecipient, completePendingCommand, listHelp, listHelp, login, login, logout, reset, sendMessageData, sendNoOp, sendShortMessageData, sendSimpleMessage, sendSimpleMessage, setSender, setSender, verify
data, disconnect, expn, getCommandSupport, getReply, getReplyCode, getReplyString, getReplyStrings, helo, help, help, mail, noop, quit, rcpt, removeProtocolCommandistener, rset, saml, send, sendCommand, sendCommand, sendCommand, sendCommand, soml, turn, vrfy
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
private static final java.lang.String DEFAULT_PROTOCOL
private final boolean isImplicit
private final java.lang.String protocol
private javax.net.ssl.SSLContext context
private java.lang.String[] suites
private java.lang.String[] protocols
private javax.net.ssl.TrustManager trustManager
TrustManager
implementation, default null (i.e. use system managers).private javax.net.ssl.KeyManager keyManager
KeyManager
, default null (i.e. use system managers).private javax.net.ssl.HostnameVerifier hostnameVerifier
HostnameVerifier
to use post-TLS, default null (i.e. no verification).private boolean tlsEndpointChecking
public SMTPSClient()
DEFAULT_PROTOCOL
i.e. TLS
Sets security mode to explicit (isImplicit = false).public SMTPSClient(boolean implicit)
DEFAULT_PROTOCOL
i.e. TLSimplicit
- The security mode, true
for implicit, false
for explicitpublic SMTPSClient(java.lang.String proto)
proto
- the protocol.public SMTPSClient(java.lang.String proto, boolean implicit)
proto
- the protocol.implicit
- The security mode, true
for implicit, false
for explicitpublic SMTPSClient(java.lang.String proto, boolean implicit, java.lang.String encoding)
proto
- the protocol.implicit
- The security mode, true
for implicit, false
for explicitencoding
- the encodingpublic SMTPSClient(boolean implicit, javax.net.ssl.SSLContext ctx)
DEFAULT_PROTOCOL
i.e. TLSimplicit
- The security mode, true
for implicit, false
for explicitctx
- A pre-configured SSL Context.public SMTPSClient(javax.net.ssl.SSLContext context)
context
- A pre-configured SSL Context.SMTPSClient(boolean, SSLContext)
protected void _connectAction_() throws java.io.IOException
_connectAction_
in class SMTP
java.io.IOException
- If it is thrown by _connectAction_().SocketClient._connectAction_()
private void initSSLContext() throws java.io.IOException
java.io.IOException
- When could not initialize the SSL context.private void performSSLNegotiation() throws java.io.IOException
java.io.IOException
- If server negotiation fails.public javax.net.ssl.KeyManager getKeyManager()
KeyManager
instance.KeyManager
instance.public void setKeyManager(javax.net.ssl.KeyManager newKeyManager)
KeyManager
to use.newKeyManager
- The KeyManager implementation to set.KeyManagerUtils
public void setEnabledCipherSuites(java.lang.String[] cipherSuites)
cipherSuites
- The cipher suites.public java.lang.String[] getEnabledCipherSuites()
Socket
is not an SSLSocket
instance, returns null.null
.public void setEnabledProtocols(java.lang.String[] protocolVersions)
protocolVersions
- The protocol versions.public java.lang.String[] getEnabledProtocols()
Socket
is not an SSLSocket
instance, returns null.null
.public boolean execTLS() throws java.io.IOException
java.io.IOException
- If an I/O error occurs while sending
the command or performing the negotiation.public javax.net.ssl.TrustManager getTrustManager()
TrustManager
.public void setTrustManager(javax.net.ssl.TrustManager newTrustManager)
TrustManager
to use.newTrustManager
- The TrustManager implementation to set.TrustManagerUtils
public javax.net.ssl.HostnameVerifier getHostnameVerifier()
HostnameVerifier
.public void setHostnameVerifier(javax.net.ssl.HostnameVerifier newHostnameVerifier)
HostnameVerifier
to use.newHostnameVerifier
- The HostnameVerifier implementation to set or null
to disable.public boolean isEndpointCheckingEnabled()
public void setEndpointCheckingEnabled(boolean enable)
enable
- Enable automatic endpoint identification checking using the HTTPS algorithm on Java 1.7+.