spring2016.10.12 14:38

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>


신고


Posted by aircook
TAG