java发送邮件(4)

来源:互联网 发布:镜像变换矩阵是什么 编辑:程序博客网 时间:2024/06/06 05:00

    我们的邮箱里,经常会收到一些非常精美的邮件(网站注册用户名发来的邮件,甚至有一些广告邮件),我们知道这些邮件都是一些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邮件。

0 0