From 406bf6797527f2251aeca4e722437e39dad8b68a Mon Sep 17 00:00:00 2001
From: afnanramadhan <13521011@std.stei.itb.ac.id>
Date: Fri, 17 Nov 2023 13:34:38 +0700
Subject: [PATCH] add email services

---
 README.md                                     | 21 +++++--
 pom.xml                                       |  5 ++
 src/main/java/org/nutricraft/Main.java        |  7 +--
 .../nutricraft/Services/EmailServices.java    | 12 ++++
 .../Services/EmailServicesImpl.java           | 61 +++++++++++++++++++
 5 files changed, 97 insertions(+), 9 deletions(-)
 create mode 100644 src/main/java/org/nutricraft/Services/EmailServices.java
 create mode 100644 src/main/java/org/nutricraft/Services/EmailServicesImpl.java

diff --git a/README.md b/README.md
index a2d88ab..921a826 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Nutricraft SOAP Service
 
-Service yang digunakan oleh .
+Service yang digunakan oleh aplikasi Nutricraft sebagai backend dengan menggunakan protokol SOAP
 
 ## Skema Basis Data
 
@@ -9,13 +9,15 @@ Service yang digunakan oleh .
 
 ## Endpoints
 
-`http://nutricraft-soap:8081/ws/subscription`
+`/ws/subscription`
 
-`http://nutricraft-soap:8081/ws/coins`
+`/ws/coins`
 
-`http://nutricraft-soap:8081/ws/userLevels`
+`/ws/userLevels`
 
-`http://nutricraft-soap:8081/ws/creatorLevels`
+`/ws/creatorLevels`
+
+`/ws/emails`
 
 <!-- AUTHOR -->
 ## Authors
@@ -27,6 +29,15 @@ Service yang digunakan oleh .
 | 13521031 |    Fahrian Afdholi     |
 
 ## Task Distribution
+|   Task               |        NIM         |
+|:--------------------:|:--------------:    |
+| SubscriptionServices | 13521011           |  
+| LevelUserServices    | 13521011           |
+| LevelCreatorServices | 13521011           |
+| CoinServices         | 13521011, 13521031 |
+| EmailServices        | 13521011           |
+
+
 
 <br>
 
diff --git a/pom.xml b/pom.xml
index f900554..07b1e65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,11 @@
             <artifactId>jaxws-api</artifactId>
             <version>2.3.1</version>
         </dependency>
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>javax.mail-api</artifactId>
+            <version>1.6.2</version>
+        </dependency>
 
 
     </dependencies>
diff --git a/src/main/java/org/nutricraft/Main.java b/src/main/java/org/nutricraft/Main.java
index d1f8274..d140123 100644
--- a/src/main/java/org/nutricraft/Main.java
+++ b/src/main/java/org/nutricraft/Main.java
@@ -1,10 +1,8 @@
 package org.nutricraft;
 
 
-import org.nutricraft.Services.CoinServicesImpl;
-import org.nutricraft.Services.LevelCreatorServicesImpl;
-import org.nutricraft.Services.LevelUserServicesImpl;
-import org.nutricraft.Services.SubscriptionServicesImpl;
+import org.nutricraft.Services.*;
+
 import javax.xml.ws.Endpoint;
 
 
@@ -16,6 +14,7 @@ public class Main {
             Endpoint.publish("http://nutricraft-soap:8081/ws/userLevels", new LevelUserServicesImpl());
             Endpoint.publish("http://nutricraft-soap:8081/ws/creatorLevels", new LevelCreatorServicesImpl());
             Endpoint.publish("http://nutricraft-soap:8081/ws/coins", new CoinServicesImpl());
+            Endpoint.publish("http://nutricraft-soap:8081/ws/emails", new EmailServicesImpl());
             System.out.println("Server is ready...");
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/src/main/java/org/nutricraft/Services/EmailServices.java b/src/main/java/org/nutricraft/Services/EmailServices.java
new file mode 100644
index 0000000..807a573
--- /dev/null
+++ b/src/main/java/org/nutricraft/Services/EmailServices.java
@@ -0,0 +1,12 @@
+package org.nutricraft.Services;
+
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+
+@WebService
+public interface EmailServices {
+
+    @WebMethod
+    public String sendEmail(String to, String from, String Password);
+}
diff --git a/src/main/java/org/nutricraft/Services/EmailServicesImpl.java b/src/main/java/org/nutricraft/Services/EmailServicesImpl.java
new file mode 100644
index 0000000..bd696d8
--- /dev/null
+++ b/src/main/java/org/nutricraft/Services/EmailServicesImpl.java
@@ -0,0 +1,61 @@
+package org.nutricraft.Services;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import java.util.*;
+import javax.mail.*;
+import javax.mail.internet.*;
+
+
+@WebService
+public class EmailServicesImpl extends Services implements EmailServices {
+    @WebMethod
+    public String sendEmail(String to, String from, String password) {
+        if(!validateApiKey()){
+            System.out.println("API KEY INVALID");
+            return null;
+        }
+        
+        String host = "smtp.gmail.com";
+        String port = "587";
+        System.out.println(from);
+        System.out.println(password);
+ 
+        Properties props = new Properties();
+        props.put("mail.smtp.auth", "true");
+        props.put("mail.smtp.starttls.enable", "true");
+        props.put("mail.smtp.host", host);
+        props.put("mail.smtp.port", port);
+        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
+            protected PasswordAuthentication getPasswordAuthentication() {
+                return new PasswordAuthentication(from, password);
+            }
+        });
+        
+        try {
+
+            MimeMessage message = new MimeMessage(session);
+            message.setFrom(new InternetAddress(from));
+            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
+            message.setSubject("Berhasil Mendaftar ke Aplikasi Nutricraft");
+            message.setContent("<html><body>"+
+            "<h2>Konfirmasi Pendaftaran Aplikasi</h2>"+
+            "<p>Selamat, Anda telah berhasil mendaftar pada aplikasi kami!</p>"+
+            "<p>Terima kasih atas partisipasi Anda. Untuk mulai menggunakan aplikasi, silakan masuk ke akun Anda menggunakan kredensial yang telah Anda daftarkan.</p>"+
+            "<p>Jika Anda memiliki pertanyaan atau memerlukan bantuan lebih lanjut, jangan ragu untuk menghubungi tim dukungan kami.</p>"+
+            
+            "<div >"+
+                "<p>-- Nutricraft Team --</p>"+
+            "</div>"+
+            "</body></html>","text/html");
+            Transport.send(message);
+            System.out.println("Sent message successfully....");
+            log("Sent Email");
+            return "Sent message successfully....";
+        } catch (MessagingException mex) {
+            mex.printStackTrace();
+            log("Unable to sent email");
+            return "Error: unable to send message....";
+        }
+    }
+}
-- 
GitLab