w ,

FajneFajne Dobre!Dobre! ŚwietnieŚwietnie Że co?Że co? WnerwWnerw SmuteczekSmuteczek

Spring Boot #20 – konfigurowanie klienta pocztowego

Spring Boot
Spring Boot

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.mailJavaMail 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 JavaMailSenderJavaMailSender 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.

Napisane przez Przemysław Bykowski

Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.

Dodaj komentarz

Spring Boot

Spring Boot #19 – Integracja z MongoDB

dao-repository

DAO czy Repository? Jaką warstwę dostępu do danych wykorzystywać?