From 96e9a09e79ce76eff1094817545e2e498bb5a5e3 Mon Sep 17 00:00:00 2001
From: Daniel <59575049+lumijiez@users.noreply.github.com>
Date: Fri, 13 Dec 2024 01:39:27 +0200
Subject: [PATCH] SMTP server
---
.../main/java/io/github/lumijiez/Main.java | 2 +
.../{ => broker}/BrokerConnector.java | 4 +-
.../lumijiez/{ => ftp}/FTPProducer.java | 5 +-
SymphonySMTP/pom.xml | 4 +-
.../main/java/io/github/lumijiez/Main.java | 27 +++++++---
.../java/io/github/lumijiez/SMTPSender.java | 50 +++++++++++++++++++
6 files changed, 80 insertions(+), 12 deletions(-)
rename SymphonyProducer/src/main/java/io/github/lumijiez/{ => broker}/BrokerConnector.java (98%)
rename SymphonyProducer/src/main/java/io/github/lumijiez/{ => ftp}/FTPProducer.java (97%)
create mode 100644 SymphonySMTP/src/main/java/io/github/lumijiez/SMTPSender.java
diff --git a/SymphonyProducer/src/main/java/io/github/lumijiez/Main.java b/SymphonyProducer/src/main/java/io/github/lumijiez/Main.java
index 8ff6b3f..e50afc4 100644
--- a/SymphonyProducer/src/main/java/io/github/lumijiez/Main.java
+++ b/SymphonyProducer/src/main/java/io/github/lumijiez/Main.java
@@ -1,5 +1,7 @@
package io.github.lumijiez;
+import io.github.lumijiez.broker.BrokerConnector;
+import io.github.lumijiez.ftp.FTPProducer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/SymphonyProducer/src/main/java/io/github/lumijiez/BrokerConnector.java b/SymphonyProducer/src/main/java/io/github/lumijiez/broker/BrokerConnector.java
similarity index 98%
rename from SymphonyProducer/src/main/java/io/github/lumijiez/BrokerConnector.java
rename to SymphonyProducer/src/main/java/io/github/lumijiez/broker/BrokerConnector.java
index a533a9b..0c04969 100644
--- a/SymphonyProducer/src/main/java/io/github/lumijiez/BrokerConnector.java
+++ b/SymphonyProducer/src/main/java/io/github/lumijiez/broker/BrokerConnector.java
@@ -1,4 +1,4 @@
-package io.github.lumijiez;
+package io.github.lumijiez.broker;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
@@ -13,6 +13,8 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+
+import io.github.lumijiez.Main;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
diff --git a/SymphonyProducer/src/main/java/io/github/lumijiez/FTPProducer.java b/SymphonyProducer/src/main/java/io/github/lumijiez/ftp/FTPProducer.java
similarity index 97%
rename from SymphonyProducer/src/main/java/io/github/lumijiez/FTPProducer.java
rename to SymphonyProducer/src/main/java/io/github/lumijiez/ftp/FTPProducer.java
index 81f59d7..a45391b 100644
--- a/SymphonyProducer/src/main/java/io/github/lumijiez/FTPProducer.java
+++ b/SymphonyProducer/src/main/java/io/github/lumijiez/ftp/FTPProducer.java
@@ -1,7 +1,8 @@
-package io.github.lumijiez;
+package io.github.lumijiez.ftp;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
+import io.github.lumijiez.Main;
import org.apache.commons.net.ftp.FTPClient;
import java.io.ByteArrayInputStream;
@@ -18,7 +19,7 @@ public class FTPProducer {
String ftpPass = "symphony";
String ftpDir = "/";
- FTPProducer() {
+ public FTPProducer() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
diff --git a/SymphonySMTP/pom.xml b/SymphonySMTP/pom.xml
index cee67a5..f9b995a 100644
--- a/SymphonySMTP/pom.xml
+++ b/SymphonySMTP/pom.xml
@@ -17,8 +17,8 @@
com.sun.mail
- jakarta.mail
- 2.0.1
+ javax.mail
+ 1.6.2
diff --git a/SymphonySMTP/src/main/java/io/github/lumijiez/Main.java b/SymphonySMTP/src/main/java/io/github/lumijiez/Main.java
index 229d859..de8d56c 100644
--- a/SymphonySMTP/src/main/java/io/github/lumijiez/Main.java
+++ b/SymphonySMTP/src/main/java/io/github/lumijiez/Main.java
@@ -4,14 +4,27 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Main {
+ public static Logger logger = LogManager.getLogger(Main.class);
public static void main(String[] args) {
- Logger logger = LogManager.getLogger(Main.class);
- logger.info("SMTP server started");
+ try {
+ SMTPSender emailSender = new SMTPSender(
+ "smtp.gmail.com",
+ 587,
+ "danthevip@gmail.com",
+ "",
+ false
+ );
- String host = "smtp.gmail.com";
- String port = "587";
- String fromEmail = "your-email@gmail.com";
- String fromPassword = "your-email-password";
- String toEmail = "daniil.schipschi@isa.utm.md";
+ emailSender.sendEmail(
+ "danthevip@gmail.com",
+ "daniil.schipschi@isa.utm.md",
+ "Test",
+ "Test test test. Hehehehehehehehehehehehehehehehehehe!"
+ );
+
+ logger.info("Email sent successfully!");
+ } catch (Exception e) {
+ logger.error("Error sending email: {}", e.getMessage());
+ }
}
}
\ No newline at end of file
diff --git a/SymphonySMTP/src/main/java/io/github/lumijiez/SMTPSender.java b/SymphonySMTP/src/main/java/io/github/lumijiez/SMTPSender.java
new file mode 100644
index 0000000..af18b5a
--- /dev/null
+++ b/SymphonySMTP/src/main/java/io/github/lumijiez/SMTPSender.java
@@ -0,0 +1,50 @@
+package io.github.lumijiez;
+
+import javax.mail.*;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+import java.util.Properties;
+
+public class SMTPSender {
+ private final String username;
+ private final String password;
+ private final String host;
+ private final int port;
+ private final boolean useSSL;
+
+ public SMTPSender(String host, int port, String username, String password, boolean useSSL) {
+ this.host = host;
+ this.port = port;
+ this.username = username;
+ this.password = password;
+ this.useSSL = useSSL;
+ }
+
+ public void sendEmail(String from, String to, String subject, String body) throws MessagingException {
+ Properties props = new Properties();
+ props.put("mail.smtp.host", host);
+ props.put("mail.smtp.port", port);
+ props.put("mail.smtp.auth", "true");
+
+ if (useSSL) {
+ props.put("mail.smtp.socketFactory.port", port);
+ props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+ } else {
+ props.put("mail.smtp.starttls.enable", "true");
+ }
+
+ Session session = Session.getInstance(props, new Authenticator() {
+ protected PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication(username, password);
+ }
+ });
+
+ Message message = new MimeMessage(session);
+ message.setFrom(new InternetAddress(from));
+ message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
+ message.setSubject(subject);
+ message.setText(body);
+
+ Transport.send(message);
+ }
+}