자바에서는 javamail 클래스를 통해 메일을 보낼수가 있다.
spring 환경에서 환경 설정을 잡고 간다
applicationConext.xml
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="xx.xx.xx.xx"/>
<property name="port" value="xxx"/>
<property name="defaultEncoding" value="utf-8"/>
<property name="username" value="윈도우서버 계정"/>
<property name="password" value="윈도우서버 계정 비밀번호"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.ssl.trust">xx.xx.xx.xx(호스트랑 동일하게)</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
gmail 을 사용하는 경우 아래와 같이 설정 하면 된다
host : smtp.gmail.com
port : 587
username : 구글 이메일
password : 구글 패스워드
mail.smtp.ssl.trust : smtp.gmail.com
하지만 나는 윈도우 서버에서 구축한 smtp를 사용 하기에 위와 같이 설정 하였다.
smtp 서버가 구축된 서버에서 해당 어플을 구동 할 경우는 localhost로 해도 무방하다
또한 위의 환경 설정 작업은 java 파일 내에서도 따로 설정이 가능하다
다음으로 mailSender를 구현한 자바 소스다
public class mailSend {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource(name="velocityEngine")
VelocityEngine velocityEngine;
@Autowired
JavaMailSenderImpl mailSender;
public void MailSet(String contentType, Map<String, Object> mailParam) {
//MimeMessage생성
try {
MimeMessage msg = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg,"UTF-8");
// 편지보낸시간 설정
helper.setSentDate(new Date());
// 송신자 설정
helper.setFrom("이메일 주소");
// 수신자 설정
mailParam.put("sendTos", sendTos);
if(!ObjectUtils.isEmpty(mailParam.get("sendTos"))) {
helper.setTo((String[]) mailParam.get("sendTos"));
}
//cc 설정
if(!ObjectUtils.isEmpty(mailParam.get("sendCCs"))) {
helper.setCc("이메일 주소");
}
// 제목 설정
helper.setSubject((String) mailParam.get("subject"));
//내용 설정
String content = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/template/"+contentType+".vm","UTF-8", mailParam);
helper.setText(content, true);
// 메일 송신
mailSender.send(msg);
logger.info("메일 발송을 완료 하였습니다.");
} catch (Exception e) { //예외처리 주소를 입력하지 않을 경우
logger.error(e.getMessage());
}
}
}
MailSet 함수를 호출 하는 곳에서 각 각 상황에 맞는 이메일 제목, 메일본문 템플릿, 송신자, 수신자, 참조자의 값을 넣어서 호출 한다.
메일 템플릿은 velocity를 사용하였다. 최근에는 많이 이용하지 않는 템플릿이지만.....
찾아보면 Gmail 등으로 설정된 부분은 많지만 windows smtp 를 사용 하는 경우의 포스팅은 못본것 같아서 정리 하였다.