diff --git a/application/model/pom.xml b/application/model/pom.xml
index aa4f9b9351f270657a187486488e3bb080640c10..1add6d565270fc20bbe48bfd87a72617b7697a74 100644
--- a/application/model/pom.xml
+++ b/application/model/pom.xml
@@ -17,5 +17,16 @@
     <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>
+        <dependency>
+            <groupId>jakarta.validation</groupId>
+            <artifactId>jakarta.validation-api</artifactId>
+        </dependency>
+    </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java b/application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java
new file mode 100644
index 0000000000000000000000000000000000000000..413e15b2276990f965f6c8b8df50822531750e65
--- /dev/null
+++ b/application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java
@@ -0,0 +1,22 @@
+package org.fuseri.model.dto.mail;
+
+import jakarta.validation.constraints.NotBlank;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MailDto {
+
+    @NotBlank
+    public
+    String receiver;
+    @NotBlank
+    public
+    String content;
+
+    public MailDto(String receiver, String content) {
+        this.receiver = receiver;
+        this.content = content;
+    }
+}
diff --git a/application/module-mail/pom.xml b/application/module-mail/pom.xml
index 4e729ff38d3890445b327bb0af9a73c66bd8d893..451076a8ca1b206274c2fd3c92dca0342b48f086 100644
--- a/application/module-mail/pom.xml
+++ b/application/module-mail/pom.xml
@@ -22,11 +22,37 @@
             <artifactId>spring-boot-starter</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <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>org.fuseri</groupId>
+            <artifactId>models</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </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/MailController.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailController.java
new file mode 100644
index 0000000000000000000000000000000000000000..58f76ef0df363a1c3f94178239c690454f001f5b
--- /dev/null
+++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailController.java
@@ -0,0 +1,42 @@
+package org.fuseri.modulemail.service;
+
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.PositiveOrZero;
+import org.fuseri.model.dto.mail.MailDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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 MailController {
+
+    private final MailService service;
+
+    @Autowired
+    public MailController(MailService service) {
+        this.service = service;
+    }
+
+
+    @GetMapping("/{id}")
+    public String getEmail(@PositiveOrZero @PathVariable("id") Long id) {
+        return  "No mail with that id yet";
+    }
+
+    @DeleteMapping("/delete/{id}")
+    public String deleteMail(@PositiveOrZero @PathVariable("id") Long id) {
+        return "Nothing to delete Yet";
+}
+
+    @PostMapping()
+    public String sendMail(@Valid @RequestBody MailDto emailDto) {
+        return 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 0000000000000000000000000000000000000000..06f5fb822a6b2b8757d8829456c38bdeb6bb0a8d
--- /dev/null
+++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java
@@ -0,0 +1,39 @@
+package org.fuseri.modulemail.service;
+
+import org.fuseri.model.dto.mail.MailDto;
+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 {
+
+    private final JavaMailSender emailSender;
+
+    @Autowired
+    public MailService(JavaMailSender emailSender) {
+        this.emailSender = emailSender;
+    }
+
+    public String send(MailDto dto) {
+        var message = new SimpleMailMessage();
+        message.setFrom("sprachul@gmail.com");
+        message.setTo(dto.receiver);
+        message.setSubject("Sprachschul");
+        message.setText(dto.content);
+
+        emailSender.send(message);
+        // store to database once there is one
+
+        return "Success, you have sent: " + dto.content;
+    }
+
+    public MailDto getMail(long id) {
+        return new MailDto("empty","empty"); // return from database once there is one
+    }
+
+    public String deleteMail(long id) {
+        return "No mail with that Id";
+    }
+
+}
diff --git a/application/module-mail/src/main/resources/application.properties b/application/module-mail/src/main/resources/application.properties
index 8b137891791fe96927ad78e64b0aad7bded08bdc..59c05327cf5d2cc3ea272498cab107cf4dbc37d8 100644
--- a/application/module-mail/src/main/resources/application.properties
+++ b/application/module-mail/src/main/resources/application.properties
@@ -1 +1,6 @@
-
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+spring.mail.username=sprachschul@gmail.com
+spring.mail.password=xnyxsknctypmubbb
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
diff --git a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ec50ec90575fbb9d97be2f7fc781e13022588b6
--- /dev/null
+++ b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java
@@ -0,0 +1,53 @@
+package org.fuseri.modulemail.service;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.fuseri.model.dto.mail.MailDto;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@SpringBootTest
+@AutoConfigureMockMvc
+class MailControllerTest {
+
+    @Autowired
+    private MockMvc mockMvc;
+
+    @Test
+    void getEmail() throws Exception {
+        mockMvc.perform(get("/mail/{id}", 1))
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    void deleteMail() throws Exception {
+        mockMvc.perform(delete("/mail/delete/{id}", 1))
+                .andExpect(status().isOk());
+    }
+
+    @Test
+    void sendMail() throws Exception {
+        var mailDto = new MailDto("user@example.com", "Hello");
+        MailController mailController = mock(MailController.class);
+        when(mailController.sendMail(mailDto)).thenReturn("Success, you have sent: " + mailDto.getContent());
+
+        mockMvc.perform(post("/mail")
+                        .content(asJsonString(mailDto))
+                        .contentType(MediaType.APPLICATION_JSON))
+                .andExpect(status().isOk());
+    }
+
+    private static String asJsonString(final Object obj) throws JsonProcessingException {
+        return new ObjectMapper().writeValueAsString(obj);
+    }
+
+}
\ No newline at end of file