通过前面的示例,所有邮件的内容都是现实定义的,并通过message.setText("XXXX")来设置的,如果要改变内容的格式就需要手动的写HTML代码,不易于维护,使用模板可以将业务逻辑和页面分开,易于页面的维护
一、Velocity模版:
定义实现类:
package com.mail.sender;
import com.mail.service.OrderManager;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.ui.velocity.VelocityEngineUtils;
import javax.activation.MailcapCommandMap;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 12-6-13
* Time: 下午2:57
* To change this template use File | Settings | File Templates.
*/
public class SimpleVelocity implements OrderManager{
private JavaMailSender javaMailSender;
private VelocityEngine velocityEngine ;
public void setJavaMailSender(JavaMailSender javaMailSender) {
this.javaMailSender = javaMailSender;
}
public void setVelocityEngine(VelocityEngine velocityEngine){
this.velocityEngine = velocityEngine ;
}
private void senderEmail(){
}
public void placeOrder() throws MessagingException {
MimeMessagePreparator preparator = new MimeMessagePreparator() {
public void prepare(MimeMessage mimeMessage) throws MessagingException {
MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
message.setTo(" XXX@qq.com");
message.setFrom("XXX@qq.com");
Map model = new HashMap() ;
model.put("see","Welocoming");
String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,"/mail.vm",model);
message.setText(text,true);
}
};
this.javaMailSender.send(preparator);
}
}
编写配置文件:
<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>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.qq.com"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="username" value="XXXX@qq.com"/>
<property name="password" value="XXXX"/>
<property name="javaMailProperties">
<value>
mail.smtp.auth=true
</value>
</property>
</bean>
<bean id="simpleVelocity" class="com.mail.sender.SimpleVelocity">
<property name="javaMailSender" ref="mailSender"/>
<property name="velocityEngine" ref="velocityEngine"/>
</bean>
接下来写模版:
<html>
<body>
${see}
</body>
</html>
测试一下看效果:

1354

被折叠的 条评论
为什么被折叠?



