Index: sources/app/src/main/java/parkup/configs/email/EmailSender.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/EmailSender.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ 	(revision )
@@ -1,5 +1,0 @@
-package parkup.configs.email;
-
-public interface EmailSender {
-    void send(String to, String email);
-}
Index: sources/app/src/main/java/parkup/configs/email/EmailService.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/EmailService.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/configs/email/EmailService.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
@@ -1,41 +1,38 @@
 package parkup.configs.email;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.mail.javamail.MimeMessageHelper;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import javax.mail.MessagingException;
+import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
+import java.io.UnsupportedEncodingException;
 
-@Service
-public class EmailService implements EmailSender{
+@Service("mailService")
+public class EmailService implements MailService {
 
-    private final static Logger LOGGER = LoggerFactory.getLogger(EmailService.class);
-    private final JavaMailSender mailSender;
+    @Autowired
+    JavaMailSender mailSender;
 
-    public EmailService(JavaMailSender mailSender) {
-        this.mailSender = mailSender;
+    public void sendEmail(Mail mail) {
+        MimeMessage mimeMessage = mailSender.createMimeMessage();
+
+        try {
+
+            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
+
+            mimeMessageHelper.setSubject(mail.getMailSubject());
+            mimeMessageHelper.setFrom(new InternetAddress(mail.getMailFrom(), "parkUp.com"));
+            mimeMessageHelper.setTo(mail.getMailTo());
+            mimeMessageHelper.setText(mail.getMailContent(), true);
+
+            mailSender.send(mimeMessageHelper.getMimeMessage());
+
+        } catch (MessagingException | UnsupportedEncodingException e) {
+            e.printStackTrace();
+        }
     }
 
-    @Override
-    @Async
-    public void send(String to, String email) {
-        try {
-            MimeMessage mimeMessage = mailSender.createMimeMessage();
-            MimeMessageHelper helper =
-                    new MimeMessageHelper(mimeMessage, "utf-8");
-            helper.setText(email, true);
-            helper.setTo(to);
-            helper.setSubject("Confirm your email");
-            helper.setFrom("parkup@gmail.com");
-            mailSender.send(mimeMessage);
-        } catch (MessagingException e) {
-            LOGGER.error("failed to send email", e);
-            throw new IllegalStateException("failed to send email");
-        }
-    }
 }
-
Index: sources/app/src/main/java/parkup/configs/email/EmailValidator.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/EmailValidator.java	(revision ce6ad22249e902dea17e6ba473846ccebdd4330c)
+++ sources/app/src/main/java/parkup/configs/email/EmailValidator.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
@@ -1,7 +1,9 @@
 package parkup.configs.email;
+
 
 import org.springframework.stereotype.Service;
 
 import java.util.function.Predicate;
+import java.util.regex.Pattern;
 
 @Service
@@ -9,6 +11,6 @@
     @Override
     public boolean test(String s) {
-        //todo
-        return true;
+        String regexPattern = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$";
+        return Pattern.compile(regexPattern).matcher(s).matches();
     }
 }
Index: sources/app/src/main/java/parkup/configs/email/Mail.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/Mail.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
+++ sources/app/src/main/java/parkup/configs/email/Mail.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
@@ -0,0 +1,96 @@
+package parkup.configs.email;
+
+import java.util.Date;
+import java.util.List;
+
+public class Mail {
+
+    private String mailFrom;
+
+    private String mailTo;
+
+    private String mailCc;
+
+    private String mailBcc;
+
+    private String mailSubject;
+
+    private String mailContent;
+
+    private String contentType;
+
+    private List < Object > attachments;
+
+    public Mail() {
+        contentType = "text/plain";
+    }
+
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    public String getMailBcc() {
+        return mailBcc;
+    }
+
+    public void setMailBcc(String mailBcc) {
+        this.mailBcc = mailBcc;
+    }
+
+    public String getMailCc() {
+        return mailCc;
+    }
+
+    public void setMailCc(String mailCc) {
+        this.mailCc = mailCc;
+    }
+
+    public String getMailFrom() {
+        return mailFrom;
+    }
+
+    public void setMailFrom(String mailFrom) {
+        this.mailFrom = mailFrom;
+    }
+
+    public String getMailSubject() {
+        return mailSubject;
+    }
+
+    public void setMailSubject(String mailSubject) {
+        this.mailSubject = mailSubject;
+    }
+
+    public String getMailTo() {
+        return mailTo;
+    }
+
+    public void setMailTo(String mailTo) {
+        this.mailTo = mailTo;
+    }
+
+    public Date getMailSendDate() {
+        return new Date();
+    }
+
+    public String getMailContent() {
+        return mailContent;
+    }
+
+    public void setMailContent(String mailContent) {
+        this.mailContent = mailContent;
+    }
+
+    public List < Object > getAttachments() {
+        return attachments;
+    }
+
+    public void setAttachments(List < Object > attachments) {
+        this.attachments = attachments;
+    }
+
+}
Index: sources/app/src/main/java/parkup/configs/email/MailConfig.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/MailConfig.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
+++ sources/app/src/main/java/parkup/configs/email/MailConfig.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
@@ -0,0 +1,36 @@
+package parkup.configs.email;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+
+import java.util.Properties;
+
+@Configuration
+public class MailConfig {
+
+    @Autowired
+    private Environment env;
+
+    @Bean
+    public JavaMailSender getMailSender() {
+        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
+
+        mailSender.setHost(env.getProperty("spring.mail.host"));
+        mailSender.setPort(Integer.valueOf(env.getProperty("spring.mail.port")));
+        mailSender.setUsername(env.getProperty("spring.mail.username"));
+        mailSender.setPassword(env.getProperty("spring.mail.password"));
+
+        Properties javaMailProperties = new Properties();
+        javaMailProperties.put("mail.smtp.starttls.enable", "true");
+        javaMailProperties.put("mail.smtp.auth", "true");
+        javaMailProperties.put("mail.transport.protocol", "smtp");
+        javaMailProperties.put("mail.debug", "true");
+
+        mailSender.setJavaMailProperties(javaMailProperties);
+        return mailSender;
+    }
+}
Index: sources/app/src/main/java/parkup/configs/email/MailService.java
===================================================================
--- sources/app/src/main/java/parkup/configs/email/MailService.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
+++ sources/app/src/main/java/parkup/configs/email/MailService.java	(revision 9dd526f0ddf9a23ad37dd4c977f761ff959f5913)
@@ -0,0 +1,5 @@
+package parkup.configs.email;
+
+public interface MailService {
+        public void sendEmail(Mail mail);
+}
