spring+velocity自動(dòng)發(fā)送郵件
|
1.下載spring及velocity類庫,
email配置文件:mail.properties: mail.default.from=jfishsz@163.com mail.host=smtp.163.com mail.username=xxxxxx mail.password=xxxxxx mail.smtp.auth=true mail.smtp.timeout=25000
spring配置文件:applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" ? "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> ? ? <!-- For mail settings and future properties files --> ? ? <bean id="propertyConfigurer" ? ? ? ? class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> ? ? ? ? <property name="locations"> ? ? ? ? ? ? ? <list> ? ? ? ? ? ? ? ? ? <value>classpath:mail.properties</value> ? ? ? ? ? ? ? </list> ? ? ? ? </property> ? ? </bean> ? ? <bean id="mailSender" ? ? ? ? class="org.springframework.mail.javamail.JavaMailSenderImpl"> ? ? ? ? <property name="host"> ? ? ? ? ? ? ? <value>${mail.host}</value> ? ? ? ? </property> ? ? ? ? <property name="username"> ? ? ? ? ? ? ? <value>${mail.username}</value> ? ? ? ? </property> ? ? ? ? <property name="password"> ? ? ? ? ? ? ? <value>${mail.password}</value> ? ? ? ? </property> ? ? ? ? <property name="javaMailProperties"> ? ? ? ? ? ? ? <props> ? ? ? ? ? ? ? ? ? <prop key="mail.smtp.auth">${mail.smtp.auth}</prop> ? ? ? ? ? ? ? ? ? <prop key="mail.smtp.timeout"> ? ? ? ? ? ? ? ? ? ? ? ${mail.smtp.timeout} ? ? ? ? ? ? ? ? ? </prop> ? ? ? ? ? ? ? </props> ? ? ? ? </property> ? ? </bean> ? ? <bean id="mailMessage" ? ? ? ? class="org.springframework.mail.SimpleMailMessage" ? ? ? ? singleton="false"> ? ? ? ? <property name="from"> ? ? ? ? ? ? ? <value>${mail.default.from}</value> ? ? ? ? </property> ? ? ? ? ? ? </bean> ? ? <bean id="sendMail" class="net.pms.email.SendMail"> ? ? ? ? <property name="mailSender" ref="mailSender" /> ? ? ? ? <property name="message" ref="mailMessage" /> ? ? ? ? <property name="velocityEngine" ref="velocityEngine" /> ? ? </bean> ? ? <!-- Configure Velocity for sending e-mail --> ? ? <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> ? ? ? ? ? ? ? ? ? <prop key="velocimacro.library"></prop> ? ? ? ? ? ? ? </props> ? ? ? ? </property> ? ? </bean> </beans> velocity模板文件:accountCreated.vm: ${message}
Username: ${username} Password: ${Password}
Login at: ${applicationURL}
2.實(shí)現(xiàn)類 SendMail.java package net.pms.email;
import java.util.Map;
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.exception.VelocityException; import org.springframework.mail.MailSender; import org.springframework.mail.SimpleMailMessage; import org.springframework.ui.velocity.VelocityEngineUtils;
public class SendMail { ? ? protected static final Log log = LogFactory.getLog(SendMail.class);
? ? private MailSender mailSender;
? ? private SimpleMailMessage message;
? ? private VelocityEngine velocityEngine;
? ? public void setVelocityEngine(VelocityEngine velocityEngine) { ? ? ? ? this.velocityEngine = velocityEngine; ? ? }
? ? public void setMailSender(MailSender mailSender) { ? ? ? ? this.mailSender = mailSender; ? ? }
? ? public void setMessage(SimpleMailMessage message) { ? ? ? ? this.message = message; ? ? }
? ? public void sendEmail(Map model) { ? ? ? ? message.setTo("jfishsz@163.com"); ? ? ? ? message.setSubject("subject"); ? ? ? ? String result = null; ? ? ? ? try { ? ? ? ? ? ? ? result = VelocityEngineUtils.mergeTemplateIntoString( ? ? ? ? ? ? ? ? ? ? ? velocityEngine, "accountCreated.vm", model); ? ? ? ? } catch (VelocityException e) { ? ? ? ? ? ? ? e.printStackTrace(); ? ? ? ? } ? ? ? ? message.setText(result); ? ? ? ? mailSender.send(message); ? ? } } 測(cè)試類:SendMailTest.java package net.pms.email;
import java.util.HashMap; import java.util.Map;
import junit.framework.TestCase;
import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SendMailTest extends TestCase { ? ? String[] paths = { "config/applicationContext*.xml" };
? ? ApplicationContext ctx = new ClassPathXmlApplicationContext(paths);
? ? SendMail s = (SendMail) ctx.getBean("sendMail");
? ? protected void setUp() throws Exception { ? ? ? ? super.setUp(); ? ? }
? ? protected void tearDown() throws Exception { ? ? ? ? super.tearDown(); ? ? }
? ? /* ? ? * Test method for 'net.pms.email.SendMail.sendEmail(Map)' ? ? */ ? ? public void testSendEmail() { ? ? ? ? Map model = new HashMap(); ? ? ? ? model.put("message", "msg"); ? ? ? ? model.put("username", "jack"); ? ? ? ? model.put("Password", "666666"); ? ? ? ? model.put("applicationURL", "www.163.com"); ? ? ? ? s.sendEmail(model); ? ? }
} 這只是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)介紹,我想通過這個(gè)例子進(jìn)入通往javamail的大門。
|
原文:
http://jfish.blog.ccidnet.com/blog/ccid/do_showone/tid_18513.html