스프링이 지원하는 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 |