现在的位置: 首页 > 综合 > 正文

spring3.0发送电子邮件(velocity模板,带附件,群发,解决乱码

2013年05月17日 ⁄ 综合 ⁄ 共 6405字 ⁄ 字号 评论关闭

在这个例子中,将与发送方相关的配置信息放在了一个email.properties文件中,spring容器启动的时候会从这个属性文件中读取发送方的配置信息,这样配置的主要原因在于,发送方一般都是固定不变的。

我将发送的内容放在一个velocity模板文件中,这个文件很像jsp文件,您可以从http://airport.iteye.com/blog/23634中获取更多的关于velocity使用方法相关的信息。(实际上velocityApache提供的一种模板语言)。我希望邮件接收方能够接收一个动态的网页,而不是一个简单的文本。

另外,程序提供了发送附件的部分,和群发的功能,只不过群发功能并不完善,因为群发过程中无法将模板变量替换成用户相关变量值,这是个缺陷,楼主也没想明白如何实现。 

下面将代码贴出,希望对大家有帮助:

先是email.properties文件:

 

模板文件:

 

 

简单解释一下,很明显这是个html文件,注意$!{userName}实际上是一个变量,在程序运行的时候,由model(一个hashmap类型的变量)传入的值会将其替换,(modelkey就是变量的名字,这里是userName,而value就是要替换的值),!表示如果没有替换的值,此处为空。更多详细信息请参考:http://airport.iteye.com/blog/23634

下面是spring的配置文件:

ThirdVelocityEmailConfig.xml  

 

这个大家都熟悉,不多解释,开始的时候加载了email.properties文件,我们上面给出了,然后创建了velocityEnginebean

下面是spring的配置类:

 

对于spring是否应该由类来配置,我并不关心,一般情况下,我更倾向于annotation这种形式,因为看起来比xml舒服点,但是annotation不能完全取代xml配置方式(至少现在是这样的),当然您完全可以使用xml进行bean的配置,效果是一样的。在这个配置类中,将从email.properties中读取的值赋值给了JavaMailSenderImpl,这个对象是java邮件发送的主要类,使用其send方法可以将预先准备好的消息发送出去。 

下面给出发送服务的源码

 

主要是mailSend这个方法,在这个方法里先创建了一个消息,然后调用mailSender将消息发送出去。 

最后给出测试程序:

 

 

这个程序对一个email来说功能已经很全面了,您可以对其更改然后应用于您的程序中。

 

再次简单说明一下,主机的信息配置在mail.properties文件中,发送的内容写在velocity模板文件中,在执行的时候将相应的字段进行替换。使用了MimeMessagePreparator进行复杂邮件的发送,MimeMessageHelper帮助简化邮件信息过程。解决了中文乱码问题。

完毕!

有问题欢迎加入群号探讨:173711587

 

抱歉!评论已关闭.