Chapter 22. Email

22.1. Introduction

org.springframework.mail 패키지에 있는 API들이 Email 을 지원합니다.
필요한 Jar 파일 :: JavaMail API(mail.jar), JAF(activation.jar)

22.2. Usage

    private MailSender mailSender;
    private SimpleMailMessage templateMessage;

    public void setMailSender(MailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void setTemplateMessage(SimpleMailMessage templateMessage) {
        this.templateMessage = templateMessage;
    }

    public void greetingEmail(MemberInfo memberInfo){
        SimpleMailMessage msg = new SimpleMailMessage(this.templateMessage);
        msg.setTo(memberInfo.getEmail());
        msg.setText(“가입해 주셔서 감사합니다.”);
        try {
            this.mailSender.send(msg);
        }
        catch (MailException e) {
            System.out.println(e.getMessage());
        }
    }

이렇게 구현하고 Bean 설정에서 mailSender와 templateMessage를 DI 합니다.

    <bean id=”emailService” class=”net.agilejava.members.service.EmailService”>
        <property name=”mailSender” ref=”mailSender” />
        <property name=”templateMessage” ref=”templateMessage”/>
    </bean>

    <bean id=”mailSender” class=”org.springframework.mail.javamail.JavaMailSenderImpl”>
        <property name=”host” value=”smtp.gmail.com” />
        <property name=”username” value=”계정” />
        <property name=”password” value=”비번” />
        <property name=”port” value=”587″ />
    </bean>

    <bean id=”templateMessage” class=”org.springframework.mail.SimpleMailMessage”>
        <property name=”from” value=”whiteship2000@gmail.com” />
        <property name=”subject” value=”메일아 가라!!!” />
    </bean>

하지만 동작하지 않는다는거..SMTP 서버를 설치하고 직접 사용하는 거면 몰라도 외부의 SMTP를 사용하려면 저기서 사용하는 JavaMailSenderImpl 요거 가지고는 메일을 보낼 수 없습니다. 대부분 외부 메일서버에서 SMTP를 지원하는 경우 SSL 인증을 사용하기 때문입니다.

위와 같이 구현하는 방법 말고도 MimeMessagePreparator 을 사용하여 구현할 수도 있습니다.

22.3. Using the JavaMail MimeMessageHelper

MimMessageHelper를 사용하여 Message를 좀 더 간단하게(?) 작성할 수 있습니다.

JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(“mail.host.com”);

MimeMessage message = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
helper.setTo(“test@host.com”);
helper.setText(“Thank you for ordering!”);

sender.send(message);

흠.. 뭐가 간단하다는건지 잘 와닿지 않습니다. 오히려 한겹 더 싸서 복잡해 보이는데 말이죠.
오오오오오오오오~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!!!
이거 좋습니다.
MimeMessageHelper를 사용하면 한글이 깨지지 않습니다.

이밖에 첨부 파일을 보낼 수 도 있습니다.