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:
- https://javaleader.pl/2019/06/14/uwierzytelnianie-dkim-mimemessage/
- https://javaleader.pl/2019/06/16/apache-james-wlasny-serwer-pocztowy/
- https://javaleader.pl/2019/06/17/rekord-spf/
- https://javaleader.pl/2019/06/17/dmarc-jako-straznik-spf-dkim/
javax.mail – JavaMail 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