diff --git a/support-portal-backend/pom.xml b/support-portal-backend/pom.xml
index 13fdd9d..ccb2063 100644
--- a/support-portal-backend/pom.xml
+++ b/support-portal-backend/pom.xml
@@ -67,8 +67,8 @@
- com.sun.mail
- jakarta.mail
+ org.springframework.boot
+ spring-boot-starter-mail
diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/constant/EmailConstant.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/constant/EmailConstant.java
index c1cf2d6..254c3a1 100644
--- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/constant/EmailConstant.java
+++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/constant/EmailConstant.java
@@ -2,18 +2,9 @@ package net.shyshkin.study.fullstack.supportportal.backend.constant;
public class EmailConstant {
- public static final String SIMPLE_MAIL_TRANSFER_PROTOCOL = "smtps";
public static final String USERNAME = "infojuniorro@gmail.com";
public static final String PASSWORD = "N99gmail1@";
public static final String FROM_EMAIL = "support@getarrays.com";
public static final String CC_EMAIL = "";
public static final String EMAIL_SUBJECT = "Get Arrays, LLC - New Password";
- public static final String GMAIL_SMTP_SERVER = "smtp.gmail.com";
- public static final String SMTP_HOST = "mail.smtp.host";
- public static final String SMTP_AUTH = "mail.smtp.auth";
- public static final String SMTP_PORT = "mail.smtp.port";
- public static final int DEFAULT_PORT = 465;
- public static final String SMTP_STARTTLS_ENABLE = "mail.smtp.starttls.enable";
- public static final String SMTP_STARTTLS_REQUIRED = "mail.smtp.starttls.required";
-
}
diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/EmailService.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/EmailService.java
index 5dbd3bf..92f970d 100644
--- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/EmailService.java
+++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/EmailService.java
@@ -3,60 +3,32 @@ package net.shyshkin.study.fullstack.supportportal.backend.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import java.util.Date;
-import java.util.Properties;
-
-import static net.shyshkin.study.fullstack.supportportal.backend.constant.EmailConstant.*;
+import static net.shyshkin.study.fullstack.supportportal.backend.constant.EmailConstant.EMAIL_SUBJECT;
@Slf4j
@Service
@RequiredArgsConstructor
public class EmailService {
+ private final JavaMailSender emailSender;
private final Environment environment;
- public void sendNewPasswordEmail(String firstName, String password, String email) throws MessagingException {
- Message message = createEmail(firstName, password, email);
- Transport transport = getEmailSession().getTransport(SIMPLE_MAIL_TRANSFER_PROTOCOL);
+ public void sendNewPasswordEmail(String firstName, String password, String email) {
- String mailUsername = environment.getProperty("PORTAL_MAIL_USERNAME", USERNAME);
- String mailPassword = environment.getProperty("PORTAL_MAIL_PASSWORD", PASSWORD);
-
- transport.connect(GMAIL_SMTP_SERVER, mailUsername, mailPassword);
- transport.sendMessage(message, message.getAllRecipients());
- transport.close();
- }
-
- private Message createEmail(String firstName, String password, String email) throws MessagingException {
- Message message = new MimeMessage(getEmailSession());
- message.setFrom(new InternetAddress(FROM_EMAIL));
- message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email, false));
- message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(CC_EMAIL, false));
+ // Create a Simple MailMessage.
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setTo(email);
+ String carbonCopyEmail = environment.getProperty("spring.mail.username");
+ log.debug("Carbon Copy Email: {}", carbonCopyEmail);
+ message.setCc(carbonCopyEmail);
message.setSubject(EMAIL_SUBJECT);
message.setText("Hello " + firstName + "!\n\nYour new account password is: " + password + "\n\nThe Support Team");
- message.setSentDate(new Date());
- message.saveChanges();
- return message;
- }
- private Session getEmailSession() {
-
- Properties properties = System.getProperties();
-
- properties.put(SMTP_HOST, GMAIL_SMTP_SERVER);
- properties.put(SMTP_AUTH, true);
- properties.put(SMTP_PORT, DEFAULT_PORT);
- properties.put(SMTP_STARTTLS_ENABLE, true);
- properties.put(SMTP_STARTTLS_REQUIRED, true);
-
- return Session.getInstance(properties);
+ // Send Message!
+ this.emailSender.send(message);
}
}
diff --git a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java
index 98da6ef..b964716 100644
--- a/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java
+++ b/support-portal-backend/src/main/java/net/shyshkin/study/fullstack/supportportal/backend/service/UserServiceImpl.java
@@ -17,7 +17,6 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
-import javax.mail.MessagingException;
import javax.transaction.Transactional;
import java.time.LocalDateTime;
import java.util.List;
@@ -91,7 +90,7 @@ public class UserServiceImpl implements UserService {
try {
emailService.sendNewPasswordEmail(newUser.getFirstName(), rawPassword, newUser.getEmail());
- } catch (MessagingException exception) {
+ } catch (Exception exception) {
log.error("Can't send message", exception);
}
diff --git a/support-portal-backend/src/main/resources/application.yml b/support-portal-backend/src/main/resources/application.yml
index 44c0ffe..b68ae2d 100644
--- a/support-portal-backend/src/main/resources/application.yml
+++ b/support-portal-backend/src/main/resources/application.yml
@@ -5,6 +5,19 @@ server:
# enabled: false
spring:
+ mail:
+ host: smtp.gmail.com
+ port: 587
+ username: ${PORTAL_MAIL_USERNAME:fake.user@gmail.com}
+ password: ${PORTAL_MAIL_PASSWORD:fake_password}
+ properties:
+ mail:
+ transport:
+ protocol: smtp
+ smtp:
+ auth: true
+ starttls:
+ enable: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql:3306/support-portal