diff --git a/pom.xml b/pom.xml
index eca3f6d872e739642807c3e3326f794187abc1e2..8f5367132db855040ac0b7bb7120587db26508c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,17 @@
             <artifactId>java-dotenv</artifactId>
             <version>5.2.2</version>
         </dependency>
+        <dependency>
+            <groupId>javax.activation</groupId>
+            <artifactId>activation</artifactId>
+            <version>1.1.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/toco/Main.java b/src/main/java/org/toco/Main.java
index cdbb1daa52b5612568e0a985f23c5810bbb2b65c..394c2f6be5a212ce02ca57b82a4ebe1d1bfe85f3 100644
--- a/src/main/java/org/toco/Main.java
+++ b/src/main/java/org/toco/Main.java
@@ -1,11 +1,14 @@
 package org.toco;
 
 import org.toco.publisher.service_publisher;
+import org.toco.service.mail;
+
 
 public class Main {
     public static void main(String[] args) {
         System.out.println("server started");
         service_publisher.publish();
         System.out.println("all services online");
+
     }
 }
\ No newline at end of file
diff --git a/src/main/java/org/toco/model/api_model.java b/src/main/java/org/toco/model/api_model.java
new file mode 100644
index 0000000000000000000000000000000000000000..aefb8661c826e78a16424609ebf8cd664d0f29e7
--- /dev/null
+++ b/src/main/java/org/toco/model/api_model.java
@@ -0,0 +1,27 @@
+package org.toco.model;
+
+import org.toco.core.connector;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+public class api_model {
+    public Boolean checkApiKey (String apikey){
+        String sql = "select * from api where api_key = (?)";
+        try (Connection connection = connector.connect() ;
+             PreparedStatement command = connection.prepareStatement(sql)) {
+            command.setString(1, apikey);
+            command.execute();
+            if(command.getResultSet().next()){
+                return true;
+            }
+            else{
+                return false;
+            }
+        } catch (SQLException exception) {
+            throw new RuntimeException("Error when checking apikey", exception);
+        }
+    }
+
+}
diff --git a/src/main/java/org/toco/service/mail.java b/src/main/java/org/toco/service/mail.java
new file mode 100644
index 0000000000000000000000000000000000000000..8314229046772ec155814a312a760bf8bbc2f1b7
--- /dev/null
+++ b/src/main/java/org/toco/service/mail.java
@@ -0,0 +1,75 @@
+package org.toco.service;
+
+import java.util.Properties;
+import javax.mail.Message;
+import javax.mail.MessagingException;
+import javax.mail.PasswordAuthentication;
+import javax.mail.Session;
+import javax.mail.Transport;
+import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
+
+
+public class mail {
+    public static void sendMail(String email, String body) {
+        // Sender's email address and password
+        final String username = "tocowbd@gmail.com";
+        final String password = "drwf pahx wnwr ahnw";
+
+        // Recipient's email address
+        String to = email;
+
+        // SMTP server settings
+        String host = "smtp.gmail.com";
+        String port = "587";
+
+        // Set the properties
+        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);
+
+        // Get the Session object
+        Session session = Session.getInstance(props, new javax.mail.Authenticator() {
+            protected PasswordAuthentication getPasswordAuthentication() {
+                return new PasswordAuthentication(username, password);
+            }
+        });
+
+        try {
+            // Create a default MimeMessage object
+            Message message = new MimeMessage(session);
+
+            // Set From: header field of the header
+            message.setFrom(new InternetAddress(username));
+
+            // Set To: header field of the header
+            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
+
+            // Set Subject: header field
+            message.setSubject("Thankyou for your purchase with toco!");
+
+            // Now set the actual message
+            message.setContent(
+                    "<h1>Thank You for Your Purchase!</h1>\n" +
+                            "    <p>We appreciate your recent purchase of our merchandise. Your support means the world to us!</p>\n" +
+                            "    <p>" + body + "</p>\n" +
+                            "    <p>If you have any questions or concerns regarding your order, feel free to reply to this email and we'll be in contact ASAP.</p>\n" +
+                            "    <p>Thank you again for choosing toco to be your partner in studying language!</p>\n" +
+                            "    <p>Best regards,</p>\n" +
+                            "    <p>Toco Team</p>\n" +
+                            "    <a href=\"http://localhost:8008\" class=\"button\">Visit Our Website</a>"
+                    , "text/html"
+            );
+
+            // Send the message
+            Transport.send(message);
+
+            System.out.println("Email sent successfully!");
+
+        } catch (MessagingException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/src/main/java/org/toco/service/toco_service.java b/src/main/java/org/toco/service/toco_service.java
index b5a5f9e94b432d52916539058d278359dad192b9..a6f6990b5ba326841aa9dbfcb58b30f025cc872a 100644
--- a/src/main/java/org/toco/service/toco_service.java
+++ b/src/main/java/org/toco/service/toco_service.java
@@ -28,7 +28,8 @@ public interface toco_service {
     public String createTransaction(
             @WebParam(name = "user_id") Integer user_id,
             @WebParam(name = "amount") Integer amount,
-            @WebParam(name = "type") String type //add gems / buy item
+            @WebParam(name = "type") String type, //add gems / buy item
+            @WebParam(name = "email") String email
     );
 
     @WebMethod
diff --git a/src/main/java/org/toco/service/toco_service_impl.java b/src/main/java/org/toco/service/toco_service_impl.java
index 06509eaedd3cd3999f6c2c20053055c99e3e8dd9..f5757902c789ad0677970c0d9dcf10da44b5d4a3 100644
--- a/src/main/java/org/toco/service/toco_service_impl.java
+++ b/src/main/java/org/toco/service/toco_service_impl.java
@@ -2,6 +2,7 @@ package org.toco.service;
 
 import org.toco.model.*;
 import org.toco.entity.*;
+import org.toco.service.mail;
 
 
 import javax.jws.WebService;
@@ -61,7 +62,7 @@ public class toco_service_impl implements toco_service {
     }
 
     @Override
-    public String createTransaction(Integer user_id, Integer amount, String type) {
+    public String createTransaction(Integer user_id, Integer amount, String type, String email) {
         if (validateApiKey()){
             userGems_model userGemsModel = new userGems_model();
             Integer userGems = userGemsModel.getUserGems(user_id);
@@ -70,6 +71,7 @@ public class toco_service_impl implements toco_service {
                 transaction_model transactionModel = new transaction_model();
                 transactionModel.insert(new transaction_entity(user_id, amount, type, "accepted"));
                 addLoggging("User with id " + user_id + " created a transaction with amount " + amount + " and status ACCEPTED");
+                mail.sendMail(email,"Your transaction with " + amount + " gems has been accepted and will be processed immediately.");
                 return "success";
             } else {
                 transaction_model transactionModel = new transaction_model();
@@ -105,13 +107,13 @@ public class toco_service_impl implements toco_service {
     }
 
     public Boolean validateApiKey() {
-        String[] API_KEYS = { "toco_rest", "Postman", "toco_php"};
+        api_model apiModel = new api_model();
         MessageContext mc = wsctx.getMessageContext();
         HttpExchange exchange = (HttpExchange) mc.get("com.sun.xml.ws.http.exchange");
         String apiKey = exchange.getRequestHeaders().getFirst("X-API-KEY");
         if (apiKey == null) {
             return false;
-        } else if (apiKey.equals(API_KEYS[0]) || apiKey.equals(API_KEYS[1]) || apiKey.equals(API_KEYS[2])) {
+        } else if (apiModel.checkApiKey(apiKey)) {
             return true;
         } else {
             return false;