diff --git a/nachrichten-manager-server/pom.xml b/nachrichten-manager-server/pom.xml
index 58a468f924faa5feae06b52d224341f70044eccc..809691410f9f54e01d5b45a58de3cffb5790b2f8 100644
--- a/nachrichten-manager-server/pom.xml
+++ b/nachrichten-manager-server/pom.xml
@@ -229,6 +229,11 @@
 			<type>test-jar</type>
 			<scope>test</scope>
 		</dependency>
+		<dependency>
+			<groupId>io.grpc</groupId>
+			<artifactId>grpc-inprocess</artifactId>
+			<scope>test</scope>
+		</dependency>
 		<dependency>
 			<groupId>de.ozgcloud.api-lib</groupId>
 			<artifactId>api-lib-core</artifactId>
@@ -256,6 +261,12 @@
 						<goals>
 							<goal>test-jar</goal>
 						</goals>
+						<configuration>
+							<excludes>
+							  <exclude>**/NachrichtenManagerTestApplication*</exclude>
+							  <exclude>**/junit-platform.properties</exclude>
+							</excludes>
+						</configuration>
 					</execution>
 				</executions>
 			</plugin>
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/EMailService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/EMailService.java
index 8f5c54e5ddc42b29e9c78810d1fa423db98adb4d..1048f946648a9afb358199726052b3a1861f7629 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/EMailService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/EMailService.java
@@ -25,18 +25,20 @@ package de.ozgcloud.nachrichten.email;
 
 import java.util.Objects;
 
+import jakarta.mail.MessagingException;
+import jakarta.mail.internet.MimeMessage;
+
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.mail.MailException;
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.mail.javamail.MimeMessageHelper;
+import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.nachrichten.email.MailSendRequest.MailAttachment;
-import jakarta.mail.MessagingException;
-import jakarta.mail.internet.MimeMessage;
 import lombok.extern.log4j.Log4j2;
 
 @Service
@@ -55,6 +57,7 @@ class EMailService {
 	@Autowired
 	private ApplicationEventPublisher publisher;
 
+	@Async
 	public void sendEmail(MailSendRequest request) {
 		MimeMessage message = sender.createMimeMessage();
 		prepareAndSendMail(message, request);
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailRecipient.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailRecipient.java
index e5f76ec83abb204fb3e88ffd4c69f1ff243548b2..82a60a01e23b240de778cdba6a482af215c04a04 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailRecipient.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailRecipient.java
@@ -23,8 +23,10 @@
  */
 package de.ozgcloud.nachrichten.email;
 
+import jakarta.validation.constraints.NotBlank;
+
 import lombok.Builder;
 
 @Builder
-public record MailRecipient(String firstName, String lastName, String email) {
+public record MailRecipient(String firstName, String lastName, @NotBlank String email) {
 }
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailSendRequest.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailSendRequest.java
index 8026f7cc8e9c1c1f287ec4621e7354092a02f648..8b5520d6b7a3e5c832add8d11c83dc9ee8f60785 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailSendRequest.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailSendRequest.java
@@ -26,6 +26,9 @@ package de.ozgcloud.nachrichten.email;
 import java.util.Collection;
 
 import jakarta.activation.DataSource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
@@ -36,7 +39,8 @@ public class MailSendRequest {
 
 	private String fromAddress;
 	@Singular
-	private Collection<MailRecipient> toAddresses;
+	@NotEmpty
+	private Collection<@Valid MailRecipient> toAddresses;
 
 	private String replyTo;
 
diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailService.java
index 1dd1bbde8018bbd11c39c1dff3c44590a05e20cc..9780a47ef8289807c7c62a57d56e20f3e43bb4e9 100644
--- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailService.java
+++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/email/MailService.java
@@ -23,18 +23,20 @@
  */
 package de.ozgcloud.nachrichten.email;
 
+import jakarta.validation.Valid;
+
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
 
 @Service
+@Validated
 public class MailService {
 
 	@Autowired
 	private EMailService emailService;
 
-	@Async
-	public void sendMail(MailSendRequest request) {
+	public void sendMail(@Valid MailSendRequest request) {
 		emailService.sendEmail(request);
 	}
 }
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..489b714cbb2abbcc18c4167fd1446781565734ce
--- /dev/null
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/NachrichtenManagerTestApplication.java
@@ -0,0 +1,28 @@
+package de.ozgcloud.nachrichten;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.context.annotation.ComponentScan;
+
+import de.ozgcloud.apilib.common.command.OzgCloudCommandService;
+import de.ozgcloud.apilib.file.OzgCloudFileService;
+import de.ozgcloud.nachrichten.postfach.BinaryFileService;
+import de.ozgcloud.nachrichten.postfach.muk.MukPostfachConfiguration;
+
+@SpringBootApplication
+@ComponentScan(basePackages = "de.ozgcloud.*")
+public class NachrichtenManagerTestApplication {
+
+	@MockBean
+	private OzgCloudCommandService ozgCloudCommandService;
+	@MockBean
+	@Qualifier(NachrichtenManagerConfiguration.OZG_CLOUD_FILE_SERVICE_NAME)
+	private OzgCloudFileService nachrichtenOzgCloudFileServices;
+	@MockBean
+	@Qualifier(MukPostfachConfiguration.OZG_CLOUD_FILE_SERVICE_NAME)
+	private OzgCloudFileService mukOzgCloudFileServices;
+	@MockBean
+	private BinaryFileService binaryFileService;
+
+}
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestTestFactory.java
index 3e7fea3f26be53b05dd8e5aeccf7258f4b0c1076..4e8db6e836ef508e9514a835cb1616bd2ff5b351 100644
--- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestTestFactory.java
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestTestFactory.java
@@ -25,9 +25,10 @@ package de.ozgcloud.nachrichten.email;
 
 import java.util.UUID;
 
-import de.ozgcloud.nachrichten.email.MailSendRequest.MailAttachment;
 import jakarta.mail.util.ByteArrayDataSource;
 
+import de.ozgcloud.nachrichten.email.MailSendRequest.MailAttachment;
+
 class MailSendRequestTestFactory {
 
 	public static final String FROM = "from@mailinator.com";
@@ -36,7 +37,7 @@ class MailSendRequestTestFactory {
 	public static final String SUBJECT = "The Subject";
 	public static final String BODY = "Lorem ipsum";
 
-	private static final String REFERENCE = UUID.randomUUID().toString();
+	public static final String REFERENCE = UUID.randomUUID().toString();
 
 	public static final String ATTACHMENT_NAME = "aFile";
 	public static final String ATTACHMENT = "BINARY_BLAH";
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestValidationTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestValidationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..bf9f9083433a381be0a735c90fc3dbace39892df
--- /dev/null
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailSendRequestValidationTest.java
@@ -0,0 +1,54 @@
+package de.ozgcloud.nachrichten.email;
+
+import static de.ozgcloud.nachrichten.email.MailSendRequestTestFactory.*;
+import static org.assertj.core.api.Assertions.*;
+
+import jakarta.mail.util.ByteArrayDataSource;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.NullAndEmptySource;
+
+import de.ozgcloud.nachrichten.email.MailSendRequest.MailAttachment;
+
+class MailSendRequestValidationTest {
+
+	private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
+
+	@Nested
+	class TestToAddressesValidation {
+		@Test
+		void shouldBeValid() {
+			var request = MailSendRequestTestFactory.create();
+
+			var violations = validator.validate(request);
+
+			assertThat(violations).isEmpty();
+		}
+
+		@Test
+		void shouldBeInvalidOnEmpty() {
+			var request = MailSendRequestTestFactory.createBuilder().clearToAddresses().build();
+
+			var violations = validator.validate(request);
+
+			assertThat(violations).isNotEmpty();
+		}
+
+		@ParameterizedTest
+		@NullAndEmptySource
+		void shouldBeInvalidOnBlankRecipientEmail(String email) {
+			var recipient = MailRecipientTestFactory.createBuilder()
+					.email(email)
+					.build();
+			var request = MailSendRequestTestFactory.createBuilder().clearToAddresses().toAddress(recipient).build();
+
+			var violations = validator.validate(request);
+
+			assertThat(violations).isNotEmpty();
+		}
+	}
+}
diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailServiceITCase.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailServiceITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..3708772085cc7349c4aace9d0235c03f9ad2ef04
--- /dev/null
+++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/email/MailServiceITCase.java
@@ -0,0 +1,47 @@
+package de.ozgcloud.nachrichten.email;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import jakarta.validation.ConstraintViolationException;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.function.Executable;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.mock.mockito.MockBean;
+
+import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor;
+import de.ozgcloud.common.test.ITCase;
+
+@ITCase
+class MailServiceITCase {
+
+	@Autowired
+	private MailService mailService;
+
+	@MockBean
+	private OzgCloudCallContextAttachingInterceptor interceptor;
+
+	@MockBean
+	private EmailGrpcService emailGrpcService;
+
+	@Nested
+	class TestSendMail {
+
+		@Test
+		void shouldThrowConstraintViolationException() {
+			Executable callSendMailWithoutRecipients = () -> mailService
+					.sendMail(MailSendRequestTestFactory.createBuilder().clearToAddresses().build());
+
+			assertThrows(ConstraintViolationException.class, callSendMailWithoutRecipients);
+		}
+
+		@Test
+		void shouldNotThrowException() {
+			Executable callSendMailWithoutRecipients = () -> mailService
+					.sendMail(MailSendRequestTestFactory.create());
+
+			assertDoesNotThrow(callSendMailWithoutRecipients);
+		}
+	}
+}
diff --git a/nachrichten-manager-server/src/test/resources/application-itcase.yaml b/nachrichten-manager-server/src/test/resources/application-itcase.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a99534b0e2823eeb33a967c8854cbb8e4f6c223b
--- /dev/null
+++ b/nachrichten-manager-server/src/test/resources/application-itcase.yaml
@@ -0,0 +1,10 @@
+grpc:
+  server:
+    port: -1
+
+spring:
+  mail:
+    host: dummy
+    username: dummy
+    password: dummy
+    port: -1
\ No newline at end of file