Konfiguracja klienta pocztowego z użyciem Spring Boota


Konfiguracja klienta pocztowego z użyciem Spring Boota

Ten wpis jest kontynuacją wpisów dotyczących konfiguracji poczty elektronicznej – zanim zaczniesz czytać ten artykuł polecam zapoznać się z wpisami:

javax.mailJavaMail Api to najpopularniesza biblioteka do zarządzania pocztą elektroniczną w Javie. Spring Boot dostarcza własne rozwiązanie które bazuje właśnie na tej bibliotece. Jest nim:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

Zaczynamy od nowego projektu Spring Boot – niezbędne zależności – plik pom.xml:

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-mail</artifactId>
	</dependency>
</dependencies>

Plik application.properties – należy dostosować oczywiście do własnych preferencji – można wykorzystać smtp.gmail.com ale polecam skonfigurować sobie serwer pocztowy Apache James!:

spring.mail.host =
spring.mail.port =
spring.mail.username =
spring.mail.password =
spring.mail.properties.mail.smtp.auth =

Implementacja usługi do wysyłki maili – utworzenie i wysłanie wiadomości MimeMessage:

@Service
public class MailService {

    private JavaMailSender javaMailSender;

    @Autowired
    public MailService(JavaMailSender javaMailSender) {
        this.javaMailSender = javaMailSender;
    }

    public void sendMail(String to,
                         String subject,
                         String text,
                         boolean isHtmlContent) 
                                 throws javax.mail.MessagingException {

        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper =
                          new MimeMessageHelper(mimeMessage, true);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(text, isHtmlContent);
        javaMailSender.send(mimeMessage);
    }
}

RestController – wstrzyknięcie serwisu MailService przez konstruktor:

@RestController
public class MailApi {

    private MailService mailService;

    @Autowired
    public MailApi(MailService mailService) {
        this.mailService = mailService;
    }

    @GetMapping("/sendTestMail")
    public String sendMail() throws javax.mail.MessagingException {
        mailService.sendMail("kontakt@javaleader.pl",
                "test message from spring boot mail api",
                "test message",
                true);
        return "message has been sent!";
    }
}

Klasa startowa:

@SpringBootApplication
public class JavaMailAppApplication {
	public static void main(String[] args) {
		SpringApplication.run(JavaMailAppApplication.class, args);
	}
}

Aplikacje testujemy uruchamiając ją poleceniem:

mvn spring-boot:run

oraz wywołując endpointa:

http://localhost:8080/sendTestMail


Leave a comment

Your email address will not be published.


*