Simple Java Mail ๋ก ์ด๋ฉ์ผ ๋ณด๋ด๊ธฐ
Gmail SMTP ์ ์์ฑํ๋ฉด์ ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ์ด๋ฉ์ผ์ ๋ฐ์กํ๋ ๊ฒ์ ๋ค๋ฃฌ ๊ฒ๋ 1๋ ์ด ๋๊ฒ ์ง๋ฌ๋ค. ์คํ๋ง ๋ถํธ ๊ธฐ๋ฐ์ ํ๋ก์ ํธ์์ spring-boot-starter-mail ๋ชจ๋์ ํตํด JavaMailSender๋ก ์ด๋ฉ์ผ์ ๋ณด๋ผ ์ ์๋ ๊ตฌํ์ ์ฝ๊ฒ ์ฐพ์๋ณผ ์ ์๋ค. ์ฐ์ฐํ ์๊ฒ๋ Simple Java Mail ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ JavaMailSender ์ MimeMessageHelper์ ๊ฐ์ ํด๋์ค์ ์ต์ํ์ง ์์ ์ด๋ณด ๊ฐ๋ฐ์๋ค์๊ฒ ๊ฐ๋จํ๊ฒ ๋ฉ์ผ ๋ฐ์ก์ ํ ์ ์๋๋ก API๋ฅผ ์ ๊ณตํด์ค๋ค.
Features
์ด๋ฉ์ผ ๋ฐ์ก์ ๋ํ ์ค์ ์ ๊น๊ฒ ๋ค์ด๊ฐ๋ฉด ์ด๋ ค์ธ ์ ์์ผ๋ ์ด๋ณด ๊ฐ๋ฐ์์๊ฒ ์ ํฉํ ํน์ง์ ์๋์ ๊ฐ๋ค.
SSL and TLS with Google mail
๊ธฐ์กด์ ํ๋ฆฌ๋ง์ปค ํ ํ๋ฆฟ์ผ๋ก ์ด๋ฉ์ผ ๋ฐ์กํ๊ธฐ ์์ ์ฒ๋ผ Gmail SMTP ์๋ฒ๋ฅผ ์ด์ฉํ ๋ STARTTLS ๋ฐฉ์์ ์ฌ์ฉํ์๋ ๊ฒ์ฒ๋ผ ์ด๋ป๊ฒ ์ค์ ํด์ผํ๋์ง๋ฅผ SSL and TLS with Google mail์์ ์ค๋ช ํด์ฃผ๊ณ ์๋ค. STARTTLS ๋ฐฉ์์ SMTP_TLS๋ฅผ ์ฌ์ฉํด์ผํจ์ ์ ์ ์๋ค.
@Import(SimpleJavaMailSpringSupport.class)
@SpringBootApplication
public class SimpleMailApplication {
public static void main(String[] args) {
SpringApplication.run(SimpleMailApplication.class, args);
}
}
simplejavamail.javaxmail.debug: true
simplejavamail.smtp.host: smtp.gmail.com
simplejavamail.smtp.port: 587
simplejavamail.transportstrategy: SMTP_TLS
simplejavamail.smtp.username: kdevkr@gmail.com
simplejavamail.smtp.password: '์ฑ ๋น๋ฐ๋ฒํธ'
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
class GmailSmtpTests {
@Autowired
Mailer mailer;
@Test
void sendMail() {
Assertions.assertDoesNotThrow(() -> mailer.testConnection());
Email email = EmailBuilder.startingBlank()
.from("Mambo <kdevkr@gmail.com>")
.to("kdevkr@gmail.com")
.withSubject("Java Mail Test with simplejavamail")
.withPlainText("Hello world")
.buildEmail();
Assertions.assertDoesNotThrow(() -> mailer.sendMail(email));
}
}
์ฑ ๋น๋ฐ๋ฒํธ ๋ฐ๊ธ์ Gmail SMTP ๊ธ์ ์ฐธ๊ณ ํ์ธ์.
Convert Email to MimeMessage
EmailConverter, MailerHelper, JMail ํด๋์ค๋ฅผ ํตํด ์ ์ฉํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ฐ EmailConverter๋ฅผ ์ด์ฉํ๋ฉด Email ์ MimeMessage๋ก ๋ณํํ๋ ๊ฒ์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ JavaMailSender์์ ํตํฉ๋ ์ ์ฉํด๋ณด์ธ๋ค.
Email email = EmailBuilder.startingBlank().buildEmail();
MimeMessage mimeMessage = EmailConverter.emailToMimeMessage(email);
๋ ์์ธํ spring-boot-starter-mail ๊ณผ ๋น๊ตํด๋ณด๊ณ ์ถ๋ค๋ฉด Feature Comparison Matrix ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด๋ณด์ธ์.