Skip to content

Commit 009de1c

Browse files
author
lorenzo
committed
bugfix: SMTP session builder did not work correctly for SSL connections.
1 parent d504e56 commit 009de1c

File tree

2 files changed

+25
-54
lines changed

2 files changed

+25
-54
lines changed

src/main/java/com/reedelk/mail/internal/smtp/MailSessionBuilder.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package com.reedelk.mail.internal.smtp;
22

33
import com.reedelk.mail.component.SMTPConfiguration;
4+
import com.reedelk.mail.component.smtp.SMTPProtocol;
5+
import com.reedelk.mail.internal.commons.Defaults;
6+
import com.reedelk.mail.internal.exception.MailMessageConfigurationException;
47
import org.apache.commons.mail.DefaultAuthenticator;
58
import org.apache.commons.mail.Email;
69

7-
import javax.mail.Session;
10+
import java.util.Optional;
811

912
public class MailSessionBuilder {
1013

@@ -25,13 +28,26 @@ public MailSessionBuilder configuration(SMTPConfiguration configuration) {
2528
}
2629

2730
public void build() {
28-
SMTPProperties smtpProperties = new SMTPProperties(configuration);
29-
30-
String username = configuration.getUsername();
31-
String password = configuration.getPassword();
32-
33-
Session session = Session.getInstance(smtpProperties, new DefaultAuthenticator(username, password));
34-
35-
email.setMailSession(session);
31+
SMTPProtocol protocol = Optional.ofNullable(configuration.getProtocol()).orElse(SMTPProtocol.SMTP);
32+
33+
String host = Optional.ofNullable(configuration.getHost())
34+
.orElseThrow(() -> new MailMessageConfigurationException("Host is mandatory"));
35+
36+
boolean startTlsEnable = Optional.ofNullable(configuration.getStartTlsEnabled()).orElse(Defaults.TLS_ENABLE);
37+
Integer connectionTimeout = Optional.ofNullable(configuration.getConnectTimeout()).orElse(Defaults.CONNECT_TIMEOUT);
38+
Integer socketTimeout = Optional.ofNullable(configuration.getSocketTimeout()).orElse(Defaults.SOCKET_TIMEOUT);
39+
40+
email.setHostName(host);
41+
email.setSmtpPort(configuration.getPort());
42+
email.setSocketTimeout(socketTimeout);
43+
email.setSocketConnectionTimeout(connectionTimeout);
44+
email.setAuthenticator(new DefaultAuthenticator(configuration.getUsername(), configuration.getPassword()));
45+
if (SMTPProtocol.SMTPS.equals(protocol)) {
46+
email.setSSLOnConnect(true);
47+
email.setSslSmtpPort(Integer.toString(configuration.getPort()));
48+
}
49+
if (startTlsEnable) {
50+
email.setStartTLSEnabled(configuration.getStartTlsEnabled());
51+
}
3652
}
3753
}

src/main/java/com/reedelk/mail/internal/smtp/SMTPProperties.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)