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.
Szkolenia live dla developerów • praktyczna wiedza, realne case’y, zero lania wody 

