Chapter 22. Email
22.1. Introduction
org.springframework.mail 패키지에 있는 API들이 Email 을 지원합니다.
필요한 Jar 파일 :: JavaMail API(mail.jar), JAF(activation.jar)
22.2. Usage
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 합니다.
<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를 좀 더 간단하게(?) 작성할 수 있습니다.
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를 사용하면 한글이 깨지지 않습니다.
이밖에 첨부 파일을 보낼 수 도 있습니다.