您的位置:首页 > 编程语言 > Java开发

《pro Spring》学习笔记之使用Velocity+Spring+James邮件服务器发送邮件

2007-09-20 11:37 477 查看
所谓集成Velocity发送邮件,最关键的部分就把原来写在配置文件的邮件体用vm模板改写,用hashmap的方式填充vm模板,构造成邮件体




package ch15.VelocityMail;






import java.util.Map;




import javax.mail.BodyPart;


import javax.mail.Message;


import javax.mail.internet.InternetAddress;


import javax.mail.internet.MimeBodyPart;


import javax.mail.internet.MimeMessage;


import javax.mail.internet.MimeMultipart;




import org.apache.velocity.app.VelocityEngine;


import org.springframework.mail.javamail.MimeMessagePreparator;


import org.springframework.ui.velocity.VelocityEngineUtils;








public class MessagePreparator implements MimeMessagePreparator ...{


private String to;


private String from;


private String htmlContent;


private String textContent;


private String subject;


private VelocityEngine velocityEngine;


private Map data;







public String getHtmlContent() ...{


return htmlContent;


}




public void setHtmlContent(String htmlContent) ...{


this.htmlContent = htmlContent;


}




public String getTextContent() ...{


return textContent;


}




public void setTextContent(String textContent) ...{


this.textContent = textContent;


}




public Map getData() ...{


return data;


}




public void setData(Map data) ...{


this.data = data;


}




public VelocityEngine getVelocityEngine() ...{


return velocityEngine;


}




public void setVelocityEngine(VelocityEngine velocityEngine) ...{


this.velocityEngine = velocityEngine;


}




public String getSubject() ...{


return subject;


}




public void setSubject(String subject) ...{


this.subject = subject;


}




public String getTo() ...{


return to;


}




public void setTo(String to) ...{


this.to = to;


}




public String getFrom() ...{


return from;


}




public void setFrom(String from) ...{


this.from = from;


}






public void prepare(MimeMessage msg) throws Exception ...{


//设置邮件信息


msg.addFrom(InternetAddress.parse(from));


msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(to));


msg.setSubject(subject);





//创建multipart/alternative的包装器


MimeMultipart mimeMultipart=new MimeMultipart();


msg.setContent(mimeMultipart);





//创建text的邮件体


BodyPart plainText=new MimeBodyPart();


plainText.setText(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, textContent, data));


mimeMultipart.addBodyPart(plainText);





//创建html的邮件体


BodyPart htmlText=new MimeBodyPart();


htmlText.setContent(VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, htmlContent, data),"text/html");


mimeMultipart.addBodyPart(htmlText);





}





}






package ch15.VelocityMail;




import java.util.HashMap;


import java.util.Map;




import org.springframework.mail.javamail.JavaMailSenderImpl;






public class MessageSender ...{





protected JavaMailSenderImpl sender;




public void sendMessage(MessagePreparator msg)...{


Map data=new HashMap();


data.put("htmlmsg", "hello world html");//htmlmsg为vm文件中的变量


data.put("textmsg", "hello world text");//textmsg为vm文件中的变量


msg.setData(data);


sender.send(msg);


}




public JavaMailSenderImpl getSender() ...{


return sender;


}




public void setSender(JavaMailSenderImpl sender) ...{


this.sender = sender;


}





}








<?xml version="1.0" encoding="UTF-8"?>


<beans


xmlns="http://www.springframework.org/schema/beans"


xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"


xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="messageSender" class="ch15.VelocityMail.MessageSender">


<property name="sender">


<ref bean="sender"/>


</property>


</bean>




<bean id="sender" class="org.springframework.mail.javamail.JavaMailSenderImpl">


<property name="host">


<value>king.cn</value>


</property>


<property name="username">


<value>gaoxiang</value>


</property>


<property name="password">


<value>gaoxiang</value>


</property>


<property name="javaMailProperties">


<props>


<prop key="mail.smtp.auth">true</prop>


<prop key="mail.smtp.timeout">10000</prop>


</props>


</property>


</bean>




<bean id="messagePreparator" class="ch15.VelocityMail.MessagePreparator">


<property name="to">


<value>yulihua2020@126.com</value>


</property>


<property name="from">


<value>gaoxiang@king.cn</value>


</property>


<property name="subject">


<value>html/text mime mail</value>


</property>


<property name="htmlContent">


<value>./src/ch15/VelocityMail/html.vm</value>


</property>


<property name="textContent">


<value>./src/ch15/VelocityMail/text.vm</value>


</property>


<property name="velocityEngine">


<bean class="org.springframework.ui.velocity.VelocityEngineFactoryBean"/>


</property>


</bean>




</beans>



html.VM


this is html message: $htmlmsg



text.vm




this is text message: $textmsg



测试代码:




package ch15.VelocityMail;




import java.io.File;




import org.springframework.context.ApplicationContext;


import org.springframework.context.support.ClassPathXmlApplicationContext;






public class VelocityMailTest ...{








public static void main(String[] args) throws Exception ...{


ApplicationContext context = new ClassPathXmlApplicationContext(


"ch15/VelocityMail/applicationContext.xml");


MessagePreparator messagePreparator = (MessagePreparator) context.getBean("messagePreparator");


MessageSender messageSender=(MessageSender)context.getBean("messageSender");




for (int i = 0; i < 10; i++) ...{


messageSender.sendMessage(messagePreparator);


System.out.println("成功");


Thread.sleep(2000); //发送后延时2秒钟


}


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: