From 1ec096e1244b953b3837b6f213b81d7a47b0ad3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz>
Date: Sun, 19 Mar 2023 12:41:32 +0100
Subject: [PATCH] mail-module impl

---
 application/model/pom.xml                     |  7 +++++
 application/module-mail/pom.xml               | 15 ++++++++++
 .../fuseri/modulemail/service/EmailDto.java   | 15 ++++++++++
 .../modulemail/service/MailControler.java     | 28 +++++++++++++++++++
 .../modulemail/service/MailService.java       | 23 +++++++++++++++
 .../src/main/resources/application.properties |  9 +++++-
 6 files changed, 96 insertions(+), 1 deletion(-)
 create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java
 create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java
 create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java

diff --git a/application/model/pom.xml b/application/model/pom.xml
index aa4f9b93..705682e3 100644
--- a/application/model/pom.xml
+++ b/application/model/pom.xml
@@ -17,5 +17,12 @@
     <properties>
         <spring-boot.repackage.skip>true</spring-boot.repackage.skip>
     </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.ifinalframework.annotation</groupId>
+            <artifactId>final-annotation-web</artifactId>
+            <version>1.4.0</version>
+        </dependency>
+    </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/application/module-mail/pom.xml b/application/module-mail/pom.xml
index 4e729ff3..42f8c4f9 100644
--- a/application/module-mail/pom.xml
+++ b/application/module-mail/pom.xml
@@ -27,6 +27,21 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+            <version>3.0.4</version>
+        </dependency>
+
+<!--        <dependency>-->
+<!--            <groupId>javax.mail</groupId>-->
+<!--            <artifactId>mail</artifactId>-->
+<!--            <version>1.4.7</version>-->
+<!--        </dependency>-->
     </dependencies>
 
     <build>
diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java
new file mode 100644
index 00000000..7db3d98a
--- /dev/null
+++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java
@@ -0,0 +1,15 @@
+package org.fuseri.modulemail.service;
+
+public class EmailDto {
+
+    String sender;
+    String receiver;
+    String content;
+
+    public EmailDto(String sender, String receiver, String content) {
+        this.sender = sender;
+        this.receiver = receiver;
+        this.content = content;
+    }
+
+}
diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java
new file mode 100644
index 00000000..87d7d61b
--- /dev/null
+++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java
@@ -0,0 +1,28 @@
+package org.fuseri.modulemail.service;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/mail")
+public class MailControler {
+
+    private final MailService service;
+
+    @Autowired
+    public MailControler(MailService service) {
+        this.service = service;
+    }
+
+    @PostMapping()
+    public ResponseEntity sendMail(@RequestBody EmailDto emailDto) {
+        return ResponseEntity.ok(service.send(emailDto));
+    }
+
+
+}
diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java
new file mode 100644
index 00000000..32e13bc6
--- /dev/null
+++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java
@@ -0,0 +1,23 @@
+package org.fuseri.modulemail.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+@Service
+public class MailService {
+
+    @Autowired
+    private JavaMailSender emailSender;
+
+    public String send(EmailDto dto) {
+        var message = new SimpleMailMessage();
+        message.setFrom(dto.sender);
+        message.setTo(dto.receiver);
+        message.setSubject("Sprachschul");
+        message.setText(dto.content);
+
+        emailSender.send(message);
+        return "Success, you have sent: " + dto.content;
+    }
+}
diff --git a/application/module-mail/src/main/resources/application.properties b/application/module-mail/src/main/resources/application.properties
index 8b137891..fe4165e1 100644
--- a/application/module-mail/src/main/resources/application.properties
+++ b/application/module-mail/src/main/resources/application.properties
@@ -1 +1,8 @@
-
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+# change the email to app dedicated mail
+spring.mail.username=email@gmail.com
+# set the mail app password for the dedicated email
+spring.mail.password=password
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
-- 
GitLab