Spring Boot dostarcza rozwiązanie pozwalające na wysyłanie wiadomości e-mail. W swojej implementacji wykorzystuje ono bardzo popularną bibliotekę pochodzącą z pakietu javax.mail – JavaMail API.
Konfiguracja
Zależność jaką należy dodać do projektu w celu zaimplementowania klienta pocztowego to:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
W pliku application.properties należy podać konfiguracje do klienta na wzór poniższego listingu:
spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=mojmial@gmail.com spring.mail.password=mojehaslo123 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
Parametry konfiguracyjne dostarczasz na podstawie danych od Twojego dostawcy poczty. W tym przypadku została wykorzystana konfiguracja pod Gmail.
Implementacja
W celu zaimplementowania metody wysyłającej wiadomości e-mail należy utworzyć klasę Serwisu i wstrzyknąć do niego JavaMailSender. JavaMailSender jest automatycznie konfigurowany przez Spring Boot na podstawie danych dostarczonych w pliku konfiguracyjnym.
Wystarczy dopisać do niego metodę, która umożliwia na podstawie adresu mail, tytułu i treści e-maila – wysłać wiadomość.
@Service public class MailService { private JavaMailSender javaMailSender; @Autowired public MailService(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } @SendMail public void sendMail(String to, String subject, String text, boolean isHtmlContent) throws MessagingException { MimeMessage mimeMessage = javaMailSender.createMimeMessage(); MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setTo(to); mimeMessageHelper.setSubject(subject); mimeMessageHelper.setText(text, isHtmlContent); javaMailSender.send(mimeMessage); } }
Wykorzystanie
Teraz można wykorzystać aplikacje jako idealnego spam bota 😉 Od Ciebie zależy jak go wykorzystać, poniżej moja przykładowa implementacja:
@RestController public class MailApi { private MailService mailService; @Autowired public MailApi(MailService mailService) { this.mailService = mailService; } @GetMapping("/sendMail") public String sendMail() throws MessagingException { mailService.sendMail("ayb01323@cndps.com", "Wygrałeś", "<b>1000 000 zł</b><br>:P", true); return "wysłano"; } }
Zawsze w implementacji dobrze wykorzystywać dedykowane na te potrzeby konto e-mailowe.