刚做完一个电影网站,网站新注册用户时需要发送email进行确认。但是这个功能不是由我来负责的。在下对此功能颇有好奇之心于是自己就搭建了一个小的spring项目来进行实践。
声明代码里有些内容并非是我一个人完成的。
首先在applicationContext.xml文件中配置bean

1. <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">  
2. <property name="host" value="smtp.sina.com">
3. </property>
4. <property name="javaMailProperties">
5. <props>
6. <prop key="mail.smtp.auth">true</prop>
7. <prop key="mail.smtp.timeout">25000</prop>
8. </props>
9. </property>
10. <property name="username" value="dufangxu"/>
11. <property name="password" value="你的邮箱密码"/>
12. </bean>



实现发送邮件java类代码:


1. private Configuration cfg = new Configuration();   
2.
3. public static void main(String[] args) throws Exception {
4. ApplicationContext ctx = new FileSystemXmlApplicationContext(
5. "src/applicationContext.xml");
6. JavaMailSender sender = (JavaMailSender) ctx.getBean("mailSender");
7. SpringMail springMail = new SpringMail();
8. springMail.sendMail(sender);
9.
10. }
11.
12. private void sendMail(JavaMailSender sender) throws Exception {
13. SimpleMailMessage mail = new SimpleMailMessage();
14. mail.setTo("sucre.xu@gmail.com"); //接收人
15. mail.setFrom("dufangxu@sina.com"); //发送人
16. mail.setSubject("test by amigo");
17. //嵌入ftl模版
18. cfg.setClassForTemplateLoading(getClass(), "/mail");
19. Map root = new HashMap();
20. root.put("username", "sucre"); //模板变量
21. Template t = cfg.getTemplate("notify-mail.ftl");
22. StringWriter writer = new StringWriter();
23. t.process(root, writer);
24. //把模版内容写入邮件中
25. mail.setText(writer.toString());
26. sender.send(mail);
27. System.out.println("邮件发送成功!");
28. }



这样还不够,还需要一个ftl模版


1. 欢迎加入!  
2.
3. 亲爱的${username}
4.
5. 请点击链接完成注册:
6.
7. 如果您的email程序不支持链接点击,请将上面的地址拷贝至您的浏览器(如IE)的地址栏进入****。
8.
9. 您可以在***:
10.
11. 查看最新的影视资料,查看各种相关消费产品,在这里交友,灌水……;
12.
13. 希望您在**度过快乐的时光!
14.
15. -
16.
17. (这是一封自动产生的email,请勿回复。)