Add jakarta lib + mail test

This commit is contained in:
Francois G 2023-09-04 16:04:35 +02:00
parent ecdf99365b
commit 3ad9e91365
5 changed files with 40 additions and 27 deletions

View file

@ -18,5 +18,6 @@
<classpathentry exported="true" kind="lib" path="JDA-5.0.0-beta.8-withDependencies.jar"/>
<classpathentry exported="true" kind="lib" path="PeerAtCodeFramework.jar"/>
<classpathentry kind="lib" path="jakarta.mail-api-2.1.2.jar"/>
<classpathentry kind="lib" path="simple-java-mail-8.1.3.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

BIN
jakarta.mail-api-2.1.2.jar Normal file

Binary file not shown.

View file

@ -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;

View file

@ -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);

View file

@ -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);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
session = Session.getInstance(props,
new jakarta.mail.Authenticator() {
Authenticator auth = new Authenticator() {
//override the getPasswordAuthentication method
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(initUsername, initPassword);
}
});
fromAddress = initFromAddress.isBlank() ? "cyberbottle@peerat.dev" : initFromAddress;
};
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();
}
}
}