异步发送电子邮件是大多数Web应用程序的重要组成部分,实现方法有很多。Dave在他博文中介绍了一个简单的方法,即Grails Mail插件与JMS、ActiveMQ合作,使用Gmail服务器发送异步邮件。仅仅几行代码就能完成邮件的异步发送!
下图是博文中要实现的功能设计图:

EmailService控制发送(排队、调整、格式化)的同步部分,SendMailQueue是JMS队列,SendMailService控制邮件的后台发送,这个发送使用Grails Mail插件通过SMTPS/SSL跟Gmail连接。
要实现博文中的代码,首先需要一个Gmail帐户,并且安装Grails1.2.x或者以上版本,以及它的插件:
主要的配置如下:
- 如果没有外部的ActiveMQ服务器,就需要在Resources.groovy中添加一个connectionFactory bean来设置本地ActiveMQ服务器;
- 在Config.groovy中为Gmail配置JavaMail参数。
配置完成后,就是代码部分了,实现两个服务以及创建HTML模板。
- EmailService:在Dave给出的示例中只调用了sendJMSMessage方法,它是由JMS插件提供的,参数为队列名、JMS消息。
- 由于EmailService用到的队列名参数为“sendMail”,那就需要创建名为“SendMailService”的服务。JMS插件会调用这个服务的onMessage方法。如果onMessage返回值是null,就会告诉MessageListenerAdapter发送消息成功;如果返回值是其他的内容,那就是告诉MessageListenerAdapter需要重新发送。
- HTML模板:在发送HTML邮件时,需要创建一个GSP模板,用来设置邮件的消息体。这里需要注意,email模板不支持sitemesh布局。
所有准备工作完毕后,就可以发送邮件了!文中邮件服务器是GMail,读者可视情况换成自己的邮件服务器。
有兴趣的读者,请阅读原文了解详细步骤。
关于如何使用Grails发送Gamil邮件,也可参考本网站的《Grails应用发送Gmail邮件》。

最新评论
2 周 3 天之前
2 周 5 天之前
4 周 5 天之前
5 周 2 天之前
5 周 3 天之前
5 周 6 天之前
6 周 4 天之前
11 周 6 天之前
13 周 5 天之前
15 周 3 天之前