diff --git a/.classpath b/.classpath index 9a18879..7b8e2a6 100644 --- a/.classpath +++ b/.classpath @@ -18,5 +18,6 @@ + diff --git a/jakarta.mail-api-2.1.2.jar b/jakarta.mail-api-2.1.2.jar new file mode 100644 index 0000000..98362f6 Binary files /dev/null and b/jakarta.mail-api-2.1.2.jar differ diff --git a/src/dev/peerat/backend/Configuration.java b/src/dev/peerat/backend/Configuration.java index fcad750..8e05047 100644 --- a/src/dev/peerat/backend/Configuration.java +++ b/src/dev/peerat/backend/Configuration.java @@ -35,7 +35,7 @@ public class Configuration { private String mailUsername; private String mailPassword; private String mailSmtpHost; - private String mailSmptPort; + private int mailSmptPort; private String mailFromAddress; private File file; diff --git a/src/dev/peerat/backend/Main.java b/src/dev/peerat/backend/Main.java index 5ba7449..2f4e163 100644 --- a/src/dev/peerat/backend/Main.java +++ b/src/dev/peerat/backend/Main.java @@ -27,6 +27,7 @@ import dev.peerat.backend.routes.groups.GroupCreate; import dev.peerat.backend.routes.groups.GroupJoin; import dev.peerat.backend.routes.groups.GroupList; import dev.peerat.backend.routes.groups.GroupQuit; +import dev.peerat.backend.utils.Mail; import dev.peerat.framework.Context; import dev.peerat.framework.HttpReader; import dev.peerat.framework.HttpWriter; @@ -41,6 +42,7 @@ public class Main{ Configuration config = new Configuration("config.txt"); config.load(); + config.getMail().send("goerfra@peerat.dev", "Super Test", "A l'abordage !!!");; Class.forName("com.mysql.cj.jdbc.Driver"); DatabaseRepository repo = new DatabaseRepository(config); diff --git a/src/dev/peerat/backend/utils/Mail.java b/src/dev/peerat/backend/utils/Mail.java index 9323417..e789fb1 100644 --- a/src/dev/peerat/backend/utils/Mail.java +++ b/src/dev/peerat/backend/utils/Mail.java @@ -1,9 +1,14 @@ package dev.peerat.backend.utils; +import java.util.Date; import java.util.Properties; +import org.simplejavamail.email.*; +import org.simplejavamail.mailer.MailerBuilder; +import org.simplejavamail.mailer.internal.MailerRegularBuilderImpl; + +import jakarta.mail.Authenticator; import jakarta.mail.Message; -import jakarta.mail.MessagingException; import jakarta.mail.PasswordAuthentication; import jakarta.mail.Session; import jakarta.mail.Transport; @@ -15,37 +20,42 @@ public class Mail { private Session session; private String fromAddress; - public Mail(String initUsername, String initPassword, String initSmtpHost, String initSmtpPort, String initFromAddress) { + public Mail(String initUsername, String initPassword, String initSmtpHost, int initSmtpPort, String initFromAddress) { Properties props = new Properties(); - props.put("mail.smtp.starttls.enable", "true"); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.host", initSmtpHost); - props.put("mail.smtp.port", initSmtpPort); - - session = Session.getInstance(props, - new jakarta.mail.Authenticator() { - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(initUsername, initPassword); - } - }); + props.put("mail.smtp.host", initSmtpHost); + props.put("mail.smtp.port", initSmtpPort); + props.put("mail.smtp.auth", "true"); + props.put("mail.smtp.starttls.enable", "true"); - - fromAddress = initFromAddress.isBlank() ? "cyberbottle@peerat.dev" : initFromAddress; + Authenticator auth = new Authenticator() { + //override the getPasswordAuthentication method + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(initUsername, initPassword); + } + }; + session = Session.getInstance(props, auth); } public void send(String toAddress, String subject, String text) { - try { + try + { + MimeMessage msg = new MimeMessage(session); + //set message headers + msg.addHeader("Content-type", "text/HTML; charset=UTF-8"); + msg.addHeader("format", "flowed"); + msg.addHeader("Content-Transfer-Encoding", "8bit"); - Message message = new MimeMessage(session); - message.setFrom(new InternetAddress(fromAddress)); - message.setRecipients(Message.RecipientType.TO, - InternetAddress.parse(toAddress)); - message.setSubject(subject); - message.setText(text); + msg.setFrom(new InternetAddress("no_reply@example.com", "NoReply-JD")); + msg.setReplyTo(InternetAddress.parse("no_reply@example.com", false)); + msg.setSubject(subject, "UTF-8"); + msg.setText(text, "UTF-8"); + msg.setSentDate(new Date()); - Transport.send(message); - } catch (MessagingException e) { - throw new RuntimeException(e); - } + msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toAddress, false)); + Transport.send(msg); + } + catch (Exception e) { + e.printStackTrace(); + } } }