对于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模板处理过的内容作为信件的正文保存在数据库当中
- String text = VelocityEngineUtils.mergeTemplateIntoString(
Mail mail=new Mail();
mail.setText(text);
这里有几点要注意的,由于我的模板是用html进行编写的,而且html模板是UTF-8的,我的
数据库也是UTF-8 的,由于刚开始时是按照上面别人写的那块模板那部分处理的,结果出现了
乱码现象,现象为:如果用用
- String text = VelocityEngineUtils.mergeTemplateIntoString(
MimeMessageHelper help = new MimeMessageHelper(message);
进行发送的时候,模板当中的中文信息会显示乱码 。
而如果用这样的方式:
- String text = VelocityEngineUtils.mergeTemplateIntoString(
MimeMessageHelper help = new MimeMessageHelper(message, true, "UTF-8");
那么会出现model中的中文信息显示正常,而模板中的静态中文信息显示乱码
最后对于乱码查询了一下,结果网上对于spring 发送html邮件出现的乱码情况不是很多,而且大
多数都是标题出现乱码。最后察看了一下mergeTemplateIntoString方法,结果用它的第三个方法
可以设置编码的那个,终于搞定这一点。
MimeMessageHelper help = new MimeMessageHelper(message, true, "UTF-8");
String text = VelocityEngineUtils.mergeTemplateIntoString(
velocityEngine, template, "UTF-8", model);
这样就不会出现乱码了。
- createReceivers
- 这个方法实现的主要是将邮件对应的接收者的信息存入数据库就可以了,实现比较简单
-
这个可以实现像上面别人写的,挺不错的。最主要的区别就是这个邮件不是从用户那里直接
得来的而是从数据库当中获取来的。
我写的也不想上面那么详细,没有用到队列,只是取出来一封发送,然后从数据库当中删除
实现起来还是比较简单的。这里就不详细介绍了。
发表评论
-
mysql分页查询
2010-11-03 17:01 3353MySql分页存储过程 MySql测试版本:5.0.41-co ... -
svn 权限分配
2010-09-19 11:39 2371转自:http://bbs.iusesvn.com/threa ... -
svn 安装配置-1
2010-09-19 11:38 1062转自:http://minedoc.iteye.c ... -
mysql数据库同步
2008-04-25 16:19 3881windows xp 下设置数据库 ... -
inverse
2008-01-17 10:31 1415前不久在搭建系统框架的时候遇到one-many与many-on ... -
CVSNT
2007-12-31 13:22 1646转自:http://blog.csdn.net/k ... -
mysql备份命令
2007-11-06 20:12 16103还原或者导入数据库命令: mysql -u root --p ... -
spry
2007-06-10 01:03 1568这几天给系统做页面级别的验证,主要是对一些输入参数进行控制。在 ... -
lucene
2007-04-19 14:29 23111。今天研究了一下lucene ... -
outOfMemory
2006-12-31 16:17 2779收藏源地址:http://blog.s ... -
notify,wait,sleep
2006-12-29 22:29 2432转载别人的http://dev.cs ... -
ThreadPool
2006-12-25 21:33 1259package org.xml.upload; import ... -
数据库连接池
2006-12-25 21:31 1436package org.xml.upload; import ... -
arrayList
2006-12-25 21:28 1031private pool=new ArrayList(); p ... -
ArrayList 同步问题
2006-12-25 20:49 3593转载! [JAVA技术集锦]Java技巧:拷贝枚举器以加强效 ...
相关推荐
3、Spring Boot 发送邮件(文本格式的邮件、发送HTML格式的邮件、发送带附件 的邮件、发送带静态资源的邮件) 个人觉得Springboot的开发简单的归纳为三步jar包引入,配置,应用。 (一)简单使用 1)JSP的使用...
// 如果需要发送HTML邮件,可以使用MimeMessageHelper public void sendHtmlEmail(String to, String subject, String htmlContent) { MimeMessage message = mailSender.createMimeMessage(); ...
通过以上步骤,你就可以在Java应用中使用Spring发送邮件了。当然,实际的邮件发送可能更复杂,涉及HTML内容、附件、多部分消息等,可以使用`MimeMessage`和`MimeMessageHelper`类来构建复杂的邮件结构。例如,添加...
下面将详细介绍如何使用Spring发送邮件。 首先,我们需要在项目中引入Spring的邮件支持。这通常通过添加`spring-context-support`依赖来完成,该依赖包含了处理邮件发送所需的类。在Maven项目中,可以在pom.xml文件...
在本话题中,我们将探讨“Spring高效批量邮件发送”这一技术点,这通常涉及到Spring框架中的邮件服务模块以及如何优化邮件发送的效率。 首先,Spring框架的MailSender接口是处理邮件发送的核心组件。它提供了send()...
`JavaMailSender`提供了发送简单文本邮件、HTML邮件以及附带附件的邮件等多种方式。 在描述中提到的`SimpleMail.java`文件,可能是实现`JavaMailSender`的一个示例类。通常,这个类会包含设置邮件信息的方法,如...
接下来,我们将介绍如何使用Spring发送不同类型的邮件: 1. **发送纯文本邮件**: 要发送纯文本邮件,你可以创建一个`SimpleMailMessage`对象,设置发件人、收件人、主题和正文,然后调用`JavaMailSender`的`send...
它支持SMTP(简单邮件传输协议)和JavaMail API,可以处理HTML邮件、附件等复杂需求。要使用Spring Mail,你需要在项目中引入相应的依赖,并配置邮件服务器的属性,如SMTP服务器地址、端口、用户名和密码。之后,你...
在Spring MVC框架中,实现邮件发送功能通常涉及配置Spring的JavaMailSender接口和使用模板引擎如FreeMarker来创建动态邮件内容。以下是一个详细的步骤指南: 1. **依赖库**: - `javax.mail`:这是Java邮件API的...
本教程将详细讲解如何利用Spring Boot实现四种类型的邮件服务:发送普通文本邮件、HTML邮件、附件邮件以及嵌入图片的邮件。我们将主要依赖Spring Boot的`spring-boot-starter-mail`模块来完成这些操作。 首先,你...
- **创建SimpleMailMessage对象**: SimpleMailMessage是Spring提供的一个预定义的邮件消息类,我们可以在这里设置邮件的发件人、收件人、主题和正文。 - **调用send方法发送邮件**: 使用JavaMailSenderImpl的send...
Spring的邮件支持是通过JavaMailSender接口实现的,它允许开发者轻松地发送各种类型的邮件,包括HTML、文本或者带有附件的邮件。 在本项目中,结合Struts和Spring,我们可以按照以下步骤实现邮件发送: 1. **配置...
`SimpleMailMessage`适用于简单的文本邮件,而`MimeMessage`则可以处理复杂的HTML邮件、附件等。 3. **发送邮件**:通过`JavaMailSender`的`send()`方法发送邮件。你可以传入一个`SimpleMailMessage`或`...
例如,发送HTML邮件可以这样实现: ```java MimeMessage message = emailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); // true表示启用MIME多部分模式 helper....
在实际项目中,你可能需要根据业务需求对邮件服务进行更复杂的定制,例如添加模板引擎生成HTML邮件内容,或者使用异步任务发送大量邮件以避免阻塞主线程。 至于`JY-esbmail`这个文件,它可能是项目源码或者资源文件...
### Spring Mail 发送邮件实例详解 #### 一、Spring Mail 概述 Spring Mail 是 Spring 框架...此外,Spring Mail 还提供了更为高级的功能,比如发送 HTML 格式的邮件、附件等,这些都是在实际应用中非常有用的功能。
要使用Spring发送邮件,我们需要进行以下步骤: 1. **配置JavaMailSender**:在Spring的配置文件中,我们需要配置`JavaMailSender`的实现,例如`JavaMailSenderImpl`。配置项包括SMTP服务器地址、端口、用户名、...
这里我们演示如何发送HTML邮件、普通文本邮件、附件和嵌入式图片: ```java @Service public class EmailService { private final JavaMailSender mailSender; public EmailService(JavaMailSender mailSender)...