스프링에서 제공하는 메일은 다양한 형태를 지원한다.
그중에 Velocity Engine을 이용하여 Template메일을 보낼수 있다.
SpringReference를 보면서 하나씩 세팅하면서 테스트 한 결과는 다음과 같다.

VelocityEngine에 대한 xml 세팅은 다음과 같다.
<bean id="velocityEngine"
  class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
  <property name="velocityProperties">
   <props>
    <prop key="resource.loader">class</prop>
    <prop key="class.resource.loader.class">
     org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
    </prop>
   </props>
  </property>
 </bean>

이렇게 선언된 velocityEngine은
<bean id="springMailSender"
  class="com.xxx.xxxx.mail.SpringMailSender" abstract="true">
  <property name="mailSender" ref="mailSender" />
  <property name="velocityEngine" ref="velocityEngine" />
 </bean>
으로 세팅하고...
본문내용은
String mailText = VelocityEngineUtils.mergeTemplateIntoString(
     velocityEngine, "com/xxx/mail/mailContent.vm",
     new HashMap());

을 이용하여 변환한 내용을 메일로 발송하는 것이다.

그런데 위의 방법은 *.vm 파일이 클래스 패스에 있어야만 파일을 찾아서 파싱할수 있다.
일반 파일로 바꾸기 위해서는 다음과 같이 변경해야 한다.
<property name="velocityProperties">
   <props>
    <prop key="resource.loader">file</prop>
    <prop key="file.resource.loader.class">org.apache.velocity.runtime.resource.loader.FileResourceLoader
    </prop>
    <prop key="file.resource.loader.path">${webapp.root}/WEB-INF/velocity</prop>
    <prop key="file.resource.loader.cache">false</prop>
   </props>
  </property>

그런데 위의 내용중에 ${webapp.root}가 있는데... 별도의 properties를 선언해서 webapp.root를 선언해야 한다. 음... 좀 거시기 하다... 귀찮기도 하고...

그래서 다시 찾아본 결과... (영어가 짧아서 자세히 읽어보지 않으면 잘 모르고 그냥 지나치곤 한다.)

<property name="resourceLoaderPath" value="WEB-INF/velocity"/>

이거 한줄이면 다 된다. ㅎㅎㅎ

암튼 짧은 영어라도 천천히 읽어보면 답이 보인다.