스프링이 지원하는 JavaMailSenderImpl(org.springframework.mail.javamail.JavaMailSenderImpl) 클래스를 이용하면 메일 보내는 서비스를 간단하게 작성할 수 있다. 사용을 위해서는 com.springsource.javax.mail-1.4.X.jar 가 필요하다.
보통은 스프링 컨택스트 파일에 빈으로 등록을 하지만, 다른 곳에서 메일 설정값을 읽어오는 부분이 있어서 직접 sender 를 구성하는 예제를 작성해 보았다.
@Test
public void test() throws MessagingException {
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost("smtp.gmail.com");
sender.setPort(587);
sender.setUsername("firstboos");
sender.setPassword("패스워드");
Properties prop = new Properties();
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.smtp.starttls.enable", "true");
sender.setJavaMailProperties(prop);
MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setTo("jeoos43@naver.com");
helper.setText("Thank you for ordering!");
sender.send(message);
}
sender.SetUsername(), sender.setPassword(), sender.setJavaMailProperties() 는 SMTP 서버에서 인증이 필요할때 설정하는 값이다.
참고로 스프링 빈으로 등록해서 사용하는 일반적인 방법은 다음과 같다.
- 빈(bean) 설정
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}">
<property name="username" value="${mail.username}">
<property name="password" value="${mail.password}">
<property name="port" value="${mail.port}">
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="hostname">${mail.host}</prop>
</props>
</property>
</bean>
- 사용 예제
@Service
public class MailServiceImpl implements MailService {
@Autowired
private JavaMailSender mailSender;
@Autowired
private MessageSource messageSource;
@Override
public void sendMail(String subject, String text, String fromUser, String toUser, String[] toCC) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");
messageHelper.setSubject(subject);
messageHelper.setTo(toUser);
messageHelper.setCc(toCC);
messageHelper.setFrom(fromUser);
messageHelper.setText(text, true);
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
도움 받은 사이트 :
http://www.mkyong.com/spring/spring-sending-e-mail-via-gmail-smtp-server-with-mailsender/
https://support.google.com/mail/answer/13287?hl=en
http://blog.saltfactory.net/58
'Engineering > Spring' 카테고리의 다른 글
| spring boot 사용 예제 (0) | 2014.07.09 |
|---|---|
| XML 기반의 Resource Bundle, PropertyPlaceHolder 사용하기 (0) | 2013.12.30 |
| Spring 에서 트랜잭션 관리 (0) | 2013.12.11 |
| WEB-INF 디렉토리에 있는 *Context.xml 가져오기 (0) | 2013.10.30 |
| sts(spring tool suite) 에 svn 설치 (0) | 2013.08.20 |