Package com.icegreen.greenmail.util
Class ServerSetup
- java.lang.Object
-
- com.icegreen.greenmail.util.ServerSetup
-
public class ServerSetup extends Object
Defines the default portssmtp 25 smtps 465 pop3 110 pop3s 995 imap 143 imaps 993 ServerSetupTest
for non-default ports- Since:
- Jan 28, 2006
Use
ServerSetupTest
for non-default ports - Version:
- $Id: $
- Author:
- Wael Chatila
-
-
Field Summary
Fields Modifier and Type Field Description static ServerSetup[]
ALL
static long
CONNECTION_TIMEOUT
Default socket connection timeout.static ServerSetup
IMAP
static ServerSetup
IMAPS
static ServerSetup
POP3
static ServerSetup
POP3S
static int
PORT_IMAP
static int
PORT_IMAPS
static int
PORT_POP3
static int
PORT_POP3S
static int
PORT_SMTP
static int
PORT_SMTPS
static String
PROTOCOL_IMAP
static String
PROTOCOL_IMAPS
static String
PROTOCOL_POP3
static String
PROTOCOL_POP3S
static String
PROTOCOL_SMTP
static String
PROTOCOL_SMTPS
static String[]
PROTOCOLS
static long
READ_TIMEOUT
Default socket read timeout.static long
SERVER_STARTUP_TIMEOUT
Default server startup timeout in milliseconds.static ServerSetup
SMTP
static ServerSetup[]
SMTP_IMAP
static ServerSetup[]
SMTP_POP3
static ServerSetup[]
SMTP_POP3_IMAP
static ServerSetup
SMTPS
static ServerSetup[]
SMTPS_IMAPS
static ServerSetup[]
SMTPS_POP3S
static ServerSetup[]
SMTPS_POP3S_IMAPS
-
Constructor Summary
Constructors Constructor Description ServerSetup(int port, String bindAddress, String protocol)
Creates a configuration.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Properties
configureJavaMailSessionProperties(Properties properties, boolean debug)
Creates default properties for a JavaMail session.ServerSetup
createCopy()
Create a deep copy.ServerSetup
createCopy(int port, String bindAddress, String protocol)
Create a deep copy.static ServerSetup[]
createCopy(ServerSetup[] serverSetups, UnaryOperator<ServerSetup> copyMutator)
Creates a copy applying given mutator on each copy.ServerSetup
createCopy(String bindAddress)
Create a deep copy.ServerSetup
dynamicPort()
Enable dynamic port allocation.static ServerSetup[]
dynamicPort(ServerSetup[] serverSetups)
Creates a copy with dynamic ports (auto-detecting available ports) enabled.boolean
equals(Object o)
String
getBindAddress()
long
getConnectionTimeout()
String
getDefaultBindAddress()
Gets the public default host address "0.0.0.0" .static String
getLocalHostAddress()
int
getPort()
String
getProtocol()
long
getReadTimeout()
long
getServerStartupTimeout()
long
getWriteTimeout()
int
hashCode()
boolean
isDynamicPort()
True if available port gets dynamically allocated.boolean
isSecure()
boolean
isVerbose()
static ServerSetup[]
mailSessionProperty(ServerSetup[] serverSetups, String key, String value)
Creates a copy with configured default mail session property.ServerSetup
mailSessionProperty(String key, String value)
Create a new server setup copy, configured with given JavaMail session property.ServerSetup
port(int port)
Creates a deep copy and updates port.void
setConnectionTimeout(long connectionTimeout)
void
setReadTimeout(long readTimeout)
void
setServerStartupTimeout(long timeoutInMs)
Sets the server startup timeout in milliseconds.ServerSetup
setVerbose(boolean verbose)
void
setWriteTimeout(long writeTimeout)
String
toString()
ServerSetup
verbose(boolean verbose)
Creates a deep copy with verbose configured.static ServerSetup[]
verbose(ServerSetup[] serverSetups)
Creates a copy with verbose mode enabled.ServerSetup
withPort(int port)
Deprecated.useport(int)
- will be deprecated in 2.1
-
-
-
Field Detail
-
PROTOCOL_SMTP
public static final String PROTOCOL_SMTP
- See Also:
- Constant Field Values
-
PROTOCOL_SMTPS
public static final String PROTOCOL_SMTPS
- See Also:
- Constant Field Values
-
PROTOCOL_POP3
public static final String PROTOCOL_POP3
- See Also:
- Constant Field Values
-
PROTOCOL_POP3S
public static final String PROTOCOL_POP3S
- See Also:
- Constant Field Values
-
PROTOCOL_IMAP
public static final String PROTOCOL_IMAP
- See Also:
- Constant Field Values
-
PROTOCOL_IMAPS
public static final String PROTOCOL_IMAPS
- See Also:
- Constant Field Values
-
PROTOCOLS
public static final String[] PROTOCOLS
-
PORT_SMTP
public static final int PORT_SMTP
- See Also:
- Constant Field Values
-
PORT_SMTPS
public static final int PORT_SMTPS
- See Also:
- Constant Field Values
-
PORT_POP3
public static final int PORT_POP3
- See Also:
- Constant Field Values
-
PORT_POP3S
public static final int PORT_POP3S
- See Also:
- Constant Field Values
-
PORT_IMAP
public static final int PORT_IMAP
- See Also:
- Constant Field Values
-
PORT_IMAPS
public static final int PORT_IMAPS
- See Also:
- Constant Field Values
-
SMTP
public static final ServerSetup SMTP
-
SMTPS
public static final ServerSetup SMTPS
-
POP3
public static final ServerSetup POP3
-
POP3S
public static final ServerSetup POP3S
-
IMAP
public static final ServerSetup IMAP
-
IMAPS
public static final ServerSetup IMAPS
-
SMTP_POP3
public static final ServerSetup[] SMTP_POP3
-
SMTP_IMAP
public static final ServerSetup[] SMTP_IMAP
-
SMTP_POP3_IMAP
public static final ServerSetup[] SMTP_POP3_IMAP
-
SMTPS_POP3S
public static final ServerSetup[] SMTPS_POP3S
-
SMTPS_POP3S_IMAPS
public static final ServerSetup[] SMTPS_POP3S_IMAPS
-
SMTPS_IMAPS
public static final ServerSetup[] SMTPS_IMAPS
-
ALL
public static final ServerSetup[] ALL
-
READ_TIMEOUT
public static final long READ_TIMEOUT
Default socket read timeout. See JavaMail session properties.- See Also:
- Constant Field Values
-
CONNECTION_TIMEOUT
public static final long CONNECTION_TIMEOUT
Default socket connection timeout. See JavaMail session properties.- See Also:
- Constant Field Values
-
SERVER_STARTUP_TIMEOUT
public static final long SERVER_STARTUP_TIMEOUT
Default server startup timeout in milliseconds.- See Also:
- Constant Field Values
-
-
Method Detail
-
getLocalHostAddress
public static String getLocalHostAddress()
-
getDefaultBindAddress
public String getDefaultBindAddress()
Gets the public default host address "0.0.0.0" .- Returns:
- the public IP host address.
-
isSecure
public boolean isSecure()
-
getProtocol
public String getProtocol()
-
getBindAddress
public String getBindAddress()
-
getPort
public int getPort()
-
getConnectionTimeout
public long getConnectionTimeout()
-
setConnectionTimeout
public void setConnectionTimeout(long connectionTimeout)
-
getReadTimeout
public long getReadTimeout()
-
setReadTimeout
public void setReadTimeout(long readTimeout)
-
getWriteTimeout
public long getWriteTimeout()
-
setWriteTimeout
public void setWriteTimeout(long writeTimeout)
-
getServerStartupTimeout
public long getServerStartupTimeout()
-
withPort
@Deprecated public ServerSetup withPort(int port)
Deprecated.useport(int)
- will be deprecated in 2.1Creates a deep copy and updates port.- Parameters:
port
- the port (0 for dynamic port allocation).- Returns:
- a modified copy.
-
port
public ServerSetup port(int port)
Creates a deep copy and updates port.- Parameters:
port
- the port (0 for dynamic port allocation).- Returns:
- a modified copy.
-
isDynamicPort
public boolean isDynamicPort()
True if available port gets dynamically allocated.- Returns:
- true if enabled.
-
dynamicPort
public ServerSetup dynamicPort()
Enable dynamic port allocation.- Returns:
- a modified copy with dynamic port allocation enabled.
-
isVerbose
public boolean isVerbose()
-
setVerbose
public ServerSetup setVerbose(boolean verbose)
- Parameters:
verbose
- if true enables JavaMail debug output by setting JavaMail property 'mail.debug'
-
verbose
public ServerSetup verbose(boolean verbose)
Creates a deep copy with verbose configured.- Parameters:
verbose
- if true enables JavaMail debug output by setting JavaMail property 'mail.debug'- Returns:
- a deep copy with verbose configured
-
setServerStartupTimeout
public void setServerStartupTimeout(long timeoutInMs)
Sets the server startup timeout in milliseconds.- Parameters:
timeoutInMs
- timeout in milliseconds.
-
configureJavaMailSessionProperties
public Properties configureJavaMailSessionProperties(Properties properties, boolean debug)
Creates default properties for a JavaMail session. Concrete server implementations can add protocol specific settings. Order of application:- Default GreenMail properties - e.g. common properties such as
mail.debug
when log level is debug or protocol specific settings such asmail.smtp.port
- ServerSetup configured mail session properties
- Parameter provided properties
mail.PROTOCOL.port
For details see- https://jakarta.ee/specifications/mail/2.0/apidocs/jakarta.mail/module-summary.html for some general settings
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/smtp/package-summary.html for valid SMTP properties.
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/imap/package-summary.html for valid IMAP properties
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/pop3/package-summary.html for valid POP3 properties.
- Parameters:
properties
- additional and optional properties which overwrite automatically added properties. Can be null.debug
- sets JavaMail debug properties- Returns:
- default properties.
-
createCopy
public ServerSetup createCopy()
Create a deep copy.- Returns:
- a copy of the server setup configuration.
-
createCopy
public ServerSetup createCopy(String bindAddress)
Create a deep copy.- Parameters:
bindAddress
- overwrites bind address when creating deep copy.- Returns:
- a copy of the server setup configuration.
-
createCopy
public ServerSetup createCopy(int port, String bindAddress, String protocol)
Create a deep copy.- Parameters:
port
- overwrites the port.bindAddress
- overwrites bind address.protocol
- overwrites the protocol.- Returns:
- a copy of the server setup configuration.
-
mailSessionProperty
public ServerSetup mailSessionProperty(String key, String value)
Create a new server setup copy, configured with given JavaMail session property.For protocol specific properties see
- https://jakarta.ee/specifications/mail/2.0/apidocs/jakarta.mail/jakarta/mail/package-summary.html for general settings
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/smtp/package-summary.html for SMTP properties.
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/imap/package-summary.html for IMAP properties
- https://jakarta.ee/specifications/mail/1.6/apidocs/index.html?com/sun/mail/pop3/package-summary.html for POP3 properties.
- Parameters:
key
- the keyvalue
- the value- Returns:
- a deep copy with configured session property
-
createCopy
public static ServerSetup[] createCopy(ServerSetup[] serverSetups, UnaryOperator<ServerSetup> copyMutator)
Creates a copy applying given mutator on each copy.- Parameters:
serverSetups
- the server setupscopyMutator
- the mutator receiving the original server setup and returning a modified copy- Returns:
- mutated copies
-
verbose
public static ServerSetup[] verbose(ServerSetup[] serverSetups)
Creates a copy with verbose mode enabled.- Parameters:
serverSetups
- the server setups.- Returns:
- copies of server setups with verbose mode enabled.
-
dynamicPort
public static ServerSetup[] dynamicPort(ServerSetup[] serverSetups)
Creates a copy with dynamic ports (auto-detecting available ports) enabled.- Parameters:
serverSetups
- the server setups.- Returns:
- copies of server setups with verbose mode enabled.
-
mailSessionProperty
public static ServerSetup[] mailSessionProperty(ServerSetup[] serverSetups, String key, String value)
Creates a copy with configured default mail session property.- Parameters:
serverSetups
- the server setups.key
- the keyvalue
- the value- Returns:
- copies of server setups with verbose mode enabled.
- See Also:
mailSessionProperty(String, String)
- Default GreenMail properties - e.g. common properties such as
-
-