对于spring发送邮件的部分看了几天,给小组的项目中添加了这一功能 .
对于spring发送邮件的资料参考了网上的很多.对这一功能的做法大概可以分为三类:
第一类: 对于发送邮件来说是用spring提供的接口直接发送邮件,这一类在网上是比较多的,在此就不多研究了.
第二类: 用对spring 提供的接口进行包装,对于发送的邮件,自己来实现一个队列,这样发送邮件的效率也很高
而且用户体验也不错,其中主要的两点是html发送邮件和如何来实现发送大量的邮件。
下面是引用javaeye上面的文章: 原文地址 http://www.iteye.com/article/49452
其中道理也不是很难,就是实现一个队列,然后由用户触发这个线程,这样很多
需要邮件发送的邮件进入队列,然后后台在一封一封地进行发送。
-
- 下面要实现我自己的email发送过程.
- 我的实现过程是模拟一个邮件系统,首先用户发送邮件时将邮件保存在自己的邮件服务器上,这个邮件服务器
- 也只是简单的两张表格,然后将信的内容保存在数据库当中.系统后台有一个监听邮件服务器的线程,这个线程
- 对于数据库当中的邮件进行监听,当有邮件时,系统发送邮件之后,将相应的邮件从服务器中删除.这样一来可以
- 实现数量比较多的邮件发送.
- 实现过程:
- 第一: 建立表格:
-
-
- CREATE TABLE `mails` (
`id` int(11) NOT NULL auto_increment,
`from_user` varchar(100) NOT NULL, //发送者的邮件地址
`subject` varchar(50) default NULL, //邮件标题
`text` mediumtext, //邮件正文
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `receivers` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL, //接收者姓名
`email` varchar(100) default NULL, //邮件接收者地址
`mail_id` int(11) NOT NULL, //外键对应上面的mails
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- CREATE TABLE `mails` (
-
-
- 其中mails 实现一对多receivers,这主要是出于系统需要进行群发邮件来考虑的
- 第二 要实现当用户进行群发邮件时,我们需要实现将邮件进行保存在数据库当中
- 需要两个方法:
- createMail
经过html模板处理过的内容作为信件的正文保存在数据库当中
-
- createReceivers
- 这个方法实现的主要是将邮件对应的接收者的信息存入数据库就可以了,实现比较简单
-
- createReceivers
这个可以实现像上面别人写的,挺不错的。最主要的区别就是这个邮件不是从用户那里直接
得来的而是从数据库当中获取来的。
我写的也不想上面那么详细,没有用到队列,只是取出来一封发送,然后从数据库当中删除
实现起来还是比较简单的。这里就不详细介绍了。