Skip to content

Commit d9a4221

Browse files
committed
#85 finalized code for setting socket timeout values on the session. Normalized merged code.
1 parent 00784c4 commit d9a4221

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

src/main/java/org/simplejavamail/mailer/Mailer.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,10 @@ public class Mailer {
8686
private static final Logger LOGGER = LoggerFactory.getLogger(Mailer.class);
8787

8888
/**
89-
* The default maximum timeout value for the transport socket is {@value #DEFAULT_MAIL_SOCKET_TIMEOUT}
89+
* The default maximum timeout value for the transport socket is {@value #DEFAULT_SESSION_TIMEOUT_MILLIS}
9090
* milliseconds. Can be overridden from a config file or through System variable.
9191
*/
92-
private static final String DEFAULT_MAIL_SOCKET_TIMEOUT = "60000";
92+
private static final int DEFAULT_SESSION_TIMEOUT_MILLIS = 60_000;
9393

9494
private final MailSender mailSender;
9595

@@ -238,12 +238,11 @@ public static Session createMailSession(final ServerConfig serverConfig, final T
238238
props.put(transportStrategy.propertyNamePort(), String.valueOf(serverConfig.getPort()));
239239

240240
// socket timeouts handling
241-
String sendMailTimeoutInMillis = ConfigLoader.valueOrProperty(
242-
null, Property.DEFAULT_MAIL_SOCKET_TIMEOUT_IN_MILLIS, DEFAULT_MAIL_SOCKET_TIMEOUT
243-
);
244-
props.put("mail.smtp.connectiontimeout", sendMailTimeoutInMillis);
245-
props.put("mail.smtp.timeout", sendMailTimeoutInMillis);
246-
props.put("mail.smtp.writetimeout", sendMailTimeoutInMillis);
241+
final int sendMailTimeoutInMillis = ConfigLoader.valueOrProperty(null,
242+
Property.DEFAULT_SESSION_TIMEOUT_MILLIS, DEFAULT_SESSION_TIMEOUT_MILLIS);
243+
props.put("mail.smtp.connectiontimeout", String.valueOf(sendMailTimeoutInMillis));
244+
props.put("mail.smtp.timeout", String.valueOf(sendMailTimeoutInMillis));
245+
props.put("mail.smtp.writetimeout", String.valueOf(sendMailTimeoutInMillis));
247246

248247
if (serverConfig.getUsername() != null) {
249248
props.put(transportStrategy.propertyNameUsername(), serverConfig.getUsername());

src/main/java/org/simplejavamail/mailer/internal/mailsender/MailSender.java

+3-9
Original file line numberDiff line numberDiff line change
@@ -158,25 +158,19 @@ the proxy bridge server (or connection pool in async mode) while a non-async ema
158158
}
159159
smtpRequestsPhaser.register();
160160
if (async) {
161-
// start up threadpool pool if necessary
161+
// start up thread pool if necessary
162162
if (executor == null || executor.isTerminated()) {
163163
executor = Executors.newFixedThreadPool(threadPoolSize);
164164
}
165165
executor.execute(new Runnable() {
166-
private static final String NAME = "sendMail process";
167-
168166
@Override
169167
public void run() {
170-
try {
171-
sendMailClosure(session, email);
172-
} catch (Exception e) {
173-
LOGGER.error("could not send email {}", email, e);
174-
}
168+
sendMailClosure(session, email);
175169
}
176170

177171
@Override
178172
public String toString() {
179-
return NAME;
173+
return "sendMail process";
180174
}
181175
});
182176
} else {

src/main/java/org/simplejavamail/springsupport/SimpleJavaMailSpringSupport.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class SimpleJavaMailSpringSupport {
1515
@Bean
1616
public Mailer loadGlobalConfigAndCreateDefaultMailer(
1717
// now obviously there are easier ways to do this, but this is the only way
18-
// I can think of that actually works accross Spring versions
18+
// I can think of that actually works across Spring versions
1919
@Value("${simplejavamail.javaxmail.debug:#{null}}") final String javaxmailDebug,
2020
@Value("${simplejavamail.transportstrategy:#{null}}") final String transportstrategy,
2121
@Value("${simplejavamail.smtp.host:#{null}}") final String smtpHost,
@@ -39,6 +39,7 @@ public Mailer loadGlobalConfigAndCreateDefaultMailer(
3939
@Value("${simplejavamail.defaults.bcc.name:#{null}}") final String defaultBccName,
4040
@Value("${simplejavamail.defaults.bcc.address:#{null}}") final String defaultBccAddress,
4141
@Value("${simplejavamail.defaults.poolsize:#{null}}") final String defaultPoolsize,
42+
@Value("${simplejavamail.defaults.sessiontimeoutmillis:#{null}}") final String defaultSessionTimeoutMillis,
4243
@Value("${simplejavamail.transport.mode.logging.only:#{null}}") final String defaultTransportModeLoggingOnly) {
4344
final Properties emailProperties = new Properties();
4445
setNullableProperty(emailProperties, Property.JAVAXMAIL_DEBUG.key(), javaxmailDebug);
@@ -64,6 +65,7 @@ public Mailer loadGlobalConfigAndCreateDefaultMailer(
6465
setNullableProperty(emailProperties, Property.DEFAULT_BCC_NAME.key(), defaultBccName);
6566
setNullableProperty(emailProperties, Property.DEFAULT_BCC_ADDRESS.key(), defaultBccAddress);
6667
setNullableProperty(emailProperties, Property.DEFAULT_POOL_SIZE.key(), defaultPoolsize);
68+
setNullableProperty(emailProperties, Property.DEFAULT_SESSION_TIMEOUT_MILLIS.key(), defaultSessionTimeoutMillis);
6769
setNullableProperty(emailProperties, Property.TRANSPORT_MODE_LOGGING_ONLY.key(), defaultTransportModeLoggingOnly);
6870

6971
ConfigLoader.loadProperties(emailProperties, true);

src/main/java/org/simplejavamail/util/ConfigLoader.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
* <li>simplejavamail.defaults.bcc.name</li>
4747
* <li>simplejavamail.defaults.bcc.address</li>
4848
* <li>simplejavamail.defaults.poolsize</li>
49+
* <li>simplejavamail.defaults.sessiontimeoutmillis</li>
4950
* <li>simplejavamail.transport.mode.logging.only</li>
5051
* </ul></pre>
5152
*/
@@ -94,7 +95,7 @@ public enum Property {
9495
DEFAULT_BCC_NAME("simplejavamail.defaults.bcc.name"),
9596
DEFAULT_BCC_ADDRESS("simplejavamail.defaults.bcc.address"),
9697
DEFAULT_POOL_SIZE("simplejavamail.defaults.poolsize"),
97-
DEFAULT_MAIL_SOCKET_TIMEOUT_IN_MILLIS("simplejavamail.defaults.mailsockettimeoutinmillis"),
98+
DEFAULT_SESSION_TIMEOUT_MILLIS("simplejavamail.defaults.sessiontimeoutmillis"),
9899
TRANSPORT_MODE_LOGGING_ONLY("simplejavamail.transport.mode.logging.only");
99100

100101
private final String key;

0 commit comments

Comments
 (0)