부제 : spring 기반으로 사용자들에게 쉽게 메일 보내는 방법! : java + spring + maven
이번 프로젝트 진행 중 깊은 빡침을 느끼게 했던 메일보내기!
정말 간단. 한것이었는데 거의 삽질의 삽질을 한 듯. @.@@@ 뭐가 이렇게 안되니ㅠ.ㅠ
그래서 혹시 도움이 될 수도 있길 바라며 간단하게 정리해 본다.
이거 완전 간단하다...ㅎ (소곤소곤 나 왜 삽질한거얌...ㅠ.ㅠ?ㅎㅎㅎ)
1. pom.xml
mail 관련 dependency를 추가! (메이븐 참 편해!)
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> |
2. servlet-context.xml
mailSender bean 객체 생성!
<!-- mail bean --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host" value="메일 host or smtp.gmail.com"/> <property name="port" value="해당 포트"/> <property name="username" value="메일 ID"/> <property name="password" value="해당 메일 비번"/> <property name="javaMailProperties"> <props> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.smtp.timeout">8500</prop> // mail 서버 연결시 timeout 시간 설정 <prop key="mail.debug">true</prop> // log를 보고 싶다면 사용 </props> </property> </bean> |
위에 내 소스는 메일 서버가 있기때문에 해당 host, port를 사용했지만
보통 사람들이 gmail을 많이 사용하기 때문에 gmail mailSender 설정도 적어 놓았다.
[ gmail로 mailSender 등록하기 ]
host : smtp.gmail.com
port : 587
username : 이용 메일 서버 ID
password : 해당 메일 비밀 번호
참고 사이트 : https://support.google.com/mail/answer/13287?hl=ko
3. 메일 코드 작성
(원하는 바에 맞게 수정하여 테스트로 보시길.)
메일 폼 방식에는 2가지(simpleMailMessage, MimeMessage)가 있다.
simpleMailMessage : 오로지 String으로 메일을 보낼 때 사용한다. (이 폼으로 html을 보내면 다 깨진다! 조심)
MimeMessage : html, 첨부파일등 다양한 폼의 메일을 보낼 때 사용한다.
3.1. MimeMessage 방식
@Autowired private JavaMailSender mailSender; // xml에 등록한 bean autowired
public void sendMail(String from, String to, String subject, String text, String formUrl) throws FileNotFoundException, URISyntaxException { try{ SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from); message.setTo(to); message.setSubject(subject); message.setText(mailText);
mailSender.send(message);
}catch(Exception e){ e.printStackTrace(); } } |
3.2. MimeMessage 방식
@Autowired private JavaMailSender mailSender; // xml에 등록한 bean autowired
public void sendMail(String from, String to, String subject, String text, String formUrl) throws FileNotFoundException, URISyntaxException { try{ MimeMessage message = mailSender.createMimeMessage();
message.setFrom(new InternetAddress(from)); message.addRecipient(RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); message.setText(text, "utf-8", "html");
mailSender.send(message);
}catch(Exception e){ e.printStackTrace(); } } |