我们的邮箱里,经常会收到一些非常精美的邮件(网站注册用户名发来的邮件,甚至有一些广告邮件),我们知道这些邮件都是一些HTML邮件,但是我们知道,要做出这样一个精美的HTML邮件,在程序中,我们得拼多少HTML和CSS代码啊,岂不是很烦。自从用了spring mail的邮件模板,妈妈再也不用担心我要拼网页代码啦。哈哈,没刹住啊。言归正传,这不是一句空话,利用spring mail的模板功能,我们可以在模板里写出HTML邮件,不用在发送邮件的程序里面去拼代码,而且更换邮件模板也变得非常简单。
spring mail利用模板发送邮件,主要用的的类当然,第三讲里讲的发送HTML邮件的JavaMailSenderImpl、MimeMessage和MimeMessageHelper这三个类是必须要的了,除此之外还要用到一个产生模板的类org.springframework.ui.velocity.VelocityEngineFactoryBean和模板类org.apache.velocity.app.VelocityEngine。这两个关系如下图:
发送模板邮件的代码如下所示:
程序代码:
public class SpringMailSender {
private VelocityEngine velocityEngine;
private JavaMailSenderImpl mailSender;
public SpringMailSender() {
mailSender = new JavaMailSenderImpl();
mailSender.setHost("smtp.qq.com");
mailSender.setUsername("249745552@qq.com");
mailSender.setPassword("linlinjiahong21");
Properties prop = System.getProperties();
prop.put("resource.loader", "class");
prop.put("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
VelocityEngineFactoryBean v = new VelocityEngineFactoryBean();
v.setVelocityProperties(prop);
try {
velocityEngine = v.createVelocityEngine();
} catch (VelocityException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void templateSend() throws MessagingException {
Map<String, String> model = new HashMap<String, String>();
// 邮件模板中参数进行传入
model.put("user", "zhaojiahong");
model.put("content", "Welcome");
// 把邮件模板代码变换为String类型备用
String emailText = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "index.vm", model);
MimeMessage msg = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(msg, true);
helper.setFrom(mailSender.getUsername());
helper.setTo("zhao.jiahong@yahoo.com");
helper.setSubject("model mail");
helper.setText(emailText, true);
mailSender.send(msg);
}
public static void main(String[] args) throws MessagingException {
SpringMailSender sender = new SpringMailSender();
sender.templateSend();
}
}
邮件模板代码:
<html>
<head>
<style type="text/css">
h4{
color:red;
background:#efefef;
}
</style>
</head>
<body>
<h4>${user} </h4>
<p><p>
<i>${content}</i>
</body>
</html>
把邮件模板放进一个index.vm文件中,放在src目录下即可。
这样,我们就完成了一个模板邮件的发送,如果我们要更换邮件模板,只需要更换index.vm文件即可,代码是不需要改动的。我们也可以做出好几个模板,在不同的情况下进行切换。从而方便快捷的发送各种精美的HTML邮件。