Spring에서 velocity 를 이용한 Temaplate메일 보내기..
Posted 2008. 1. 29. 13:04스프링에서 제공하는 메일은 다양한 형태를 지원한다.
그중에 Velocity Engine을 이용하여 Template메일을 보낼수 있다.
SpringReference를 보면서 하나씩 세팅하면서 테스트 한 결과는 다음과 같다.
VelocityEngine에 대한 xml 세팅은 다음과 같다.
이렇게 선언된 velocityEngine은
본문내용은
을 이용하여 변환한 내용을 메일로 발송하는 것이다.
그런데 위의 방법은 *.vm 파일이 클래스 패스에 있어야만 파일을 찾아서 파싱할수 있다.
일반 파일로 바꾸기 위해서는 다음과 같이 변경해야 한다.
그런데 위의 내용중에 ${webapp.root}가 있는데... 별도의 properties를 선언해서 webapp.root를 선언해야 한다. 음... 좀 거시기 하다... 귀찮기도 하고...
그래서 다시 찾아본 결과... (영어가 짧아서 자세히 읽어보지 않으면 잘 모르고 그냥 지나치곤 한다.)
이거 한줄이면 다 된다. ㅎㅎㅎ
암튼 짧은 영어라도 천천히 읽어보면 답이 보인다.
그중에 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>
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>
으로 세팅하고...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());
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>
<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"/>
이거 한줄이면 다 된다. ㅎㅎㅎ
암튼 짧은 영어라도 천천히 읽어보면 답이 보인다.
'개발노트 > Spring' 카테고리의 다른 글
WebService의 개발방법 스타일 (0) | 2010.03.19 |
---|---|
비동기 처리를 위한 webService모듈... (0) | 2010.01.27 |
Spring에서 메일 사용하기 (0) | 2008.01.24 |
여러개의 DB에 선택적으로 커넥션하기 (0) | 2007.12.28 |
Spring관련 영문자료 사이트 (0) | 2007.11.28 |
- Filed under : 개발노트/Spring