diff --git a/pom.xml b/pom.xml index d6ef542..ed47212 100644 --- a/pom.xml +++ b/pom.xml @@ -77,6 +77,11 @@ org.springframework.boot spring-boot-starter-webflux + + org.springframework.boot + spring-boot-starter-mail + 3.3.4 + diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/controller/EmailController.java b/src/main/java/_11/asktpk/artisanconnectbackend/controller/EmailController.java new file mode 100644 index 0000000..69dddc2 --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/controller/EmailController.java @@ -0,0 +1,25 @@ +package _11.asktpk.artisanconnectbackend.controller; +import _11.asktpk.artisanconnectbackend.dto.EmailDTO; +import _11.asktpk.artisanconnectbackend.service.EmailService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/v1/email") +public class EmailController { + private final EmailService emailService; + + public EmailController(EmailService emailService) { + this.emailService = emailService; + } + + @PostMapping("/send") + public ResponseEntity sendEmail(@RequestBody EmailDTO email) { + try { + emailService.sendEmail(email); + return ResponseEntity.ok("Email wysłany pomyślnie"); + } catch (Exception e) { + return ResponseEntity.status(500).body("Błąd podczas wysyłania emaila"); + } + } +} \ No newline at end of file diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/dto/EmailDTO.java b/src/main/java/_11/asktpk/artisanconnectbackend/dto/EmailDTO.java new file mode 100644 index 0000000..ead076f --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/dto/EmailDTO.java @@ -0,0 +1,20 @@ +package _11.asktpk.artisanconnectbackend.dto; + +import lombok.Getter; +import lombok.Setter; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; + +@Getter +@Setter +public class EmailDTO { + @Email(message = "Podaj poprawny adres email") + @NotBlank(message = "Adres email nie może być pusty") + private String to; + + @NotBlank(message = "Temat nie może być pusty") + private String subject; + + @NotBlank(message = "Treść nie może być pusta") + private String body; +} \ No newline at end of file diff --git a/src/main/java/_11/asktpk/artisanconnectbackend/service/EmailService.java b/src/main/java/_11/asktpk/artisanconnectbackend/service/EmailService.java new file mode 100644 index 0000000..fbb6474 --- /dev/null +++ b/src/main/java/_11/asktpk/artisanconnectbackend/service/EmailService.java @@ -0,0 +1,24 @@ +package _11.asktpk.artisanconnectbackend.service; + +import _11.asktpk.artisanconnectbackend.dto.EmailDTO; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.stereotype.Service; + +@Service +public class EmailService { + private final JavaMailSender mailSender; + + public EmailService(JavaMailSender mailSender) { + this.mailSender = mailSender; + } + + public void sendEmail(EmailDTO email) { + SimpleMailMessage message = new SimpleMailMessage(); + message.setTo(email.getTo()); + message.setSubject(email.getSubject()); + message.setText(email.getBody()); + message.setFrom("patryk.kania001@gmail.com"); + mailSender.send(message); + } +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ed4cdfd..ba14ee0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -18,6 +18,13 @@ file.upload-dir=/Users/andsol/Desktop/uploads spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB +spring.mail.host=smtp.gmail.com +spring.mail.port=587 +spring.mail.username=patryk.kania001@gmail.com +spring.mail.password=pmyd ylwg mbsn hcpp +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true + tpay.clientId = 01JQKC048X62ST9V59HNRSXD92-01JQKC2CQHPYXQFSFX8BKC24BX tpay.clientSecret = 44898642be53381cdcc47f3e44bf5a15e592f5d270fc3a6cf6fb81a8b8ebffb9 tpay.authUrl = https://openapi.sandbox.tpay.com/oauth/auth