Spring에서 org.springframework.mail package 아래 class들을 사용하서 편리하게 메일을 보낼 수 있습니다.
org.springframework.mail.SimpleMailMessage class를 사용해서 메일을 보낼텐데.. classpath에 해당 class가 포함되어 있지 않다면 다음과 같이 library를 추가해 줍니다.
pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
다음과 같이 Spring bean설정을 합니다.
servlet-context.xml
<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl"
p:host="stmp.test.co.kr"
p:username="from@test.co.kr"
p:password="test"
/>
다음과 같이 위에서 설정한 javaMailSendImpl bean을 이용해서 메일을 보냅니다.
HomeController.java
package com.tistory.aircook;
import java.util.Locale;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@Autowired
private JavaMailSenderImpl javaMailSenderImpl;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) throws Exception {
//일반 텍스트메일
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom("from@test.co.kr");
simpleMailMessage.setTo("to@test.co.kr");
simpleMailMessage.setSubject("Simple 테스트 메일");
simpleMailMessage.setText("메일 내용입니다.");
javaMailSenderImpl.send(simpleMailMessage);
//HTML 메일
MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
mimeMessage.setFrom(new InternetAddress("from@test.co.kr"));
mimeMessage.addRecipient(RecipientType.TO, new InternetAddress("to@test.co.kr"));
mimeMessage.setSubject("Mime 테스트 메일");
mimeMessage.setText("<b>메일 내용입니다.</b>", "UTF-8", "html");
javaMailSenderImpl.send(mimeMessage);
return "home";
}
}
메일을 보내기 위해서는 mail을 보내기 위한 다음 library가 필요합니다.
maven을 통해 확인하면 아시겠지만.. 아래 library는 activation에 대해 의존성을 가지고 있습니다.
pom.xml
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
그런데 위 library에 대해 버전을 올릴려고 하니.. groupId와 artifactId가 아래와 같이 바뀌었네요.
http://stackoverflow.com/questions/22020533/javamail-api-from-maven
pom.xml
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
'spring' 카테고리의 다른 글
Spring 원격작업 기술 (0) | 2016.09.01 |
---|---|
Spring을 이용한 RESTful 서비스 3 (0) | 2012.07.12 |
Spring을 이용한 RESTful 서비스 2 (1) | 2012.07.11 |
Spring을 이용한 RESTful 서비스 1 (3) | 2012.07.11 |
Spring + iBatis 프레임워크 구성시 오라클 LOB 타입 사용하기 (5) | 2012.04.20 |