千家信息网

怎么用Spring让Java Mail支持简化邮件发送

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这期内容当中小编将会给大家带来有关怎么用Spring让Java Mail支持简化邮件发送,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Spring的邮件发送的核心是
千家信息网最后更新 2025年11月11日怎么用Spring让Java Mail支持简化邮件发送

这期内容当中小编将会给大家带来有关怎么用Spring让Java Mail支持简化邮件发送,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

Spring的邮件发送的核心是MailSender接口,在Spring3.0中提供了一个实现类JavaMailSenderImpl,这个类是发送邮件的核心类。可以通过在配置文件中配置使用,当然也可以自己硬编码到代码中(方便起见,下面的演示代码都是硬编码到代码中,省得配置麻烦)。

Spring提供的邮件发送不仅支持简单邮件的发送、添加附件,而且还可以使用velocity模板控制页面样式(应该也支持freemarker)。

首先对加入相应Spring jar包和Java Mail 的jar包。

我们首先得声明一个MailSender对象,因为MailSender对象只有两个重载的send(...)方法,显得有些简陋,我们建议选用JavaMailSender接口,或者干脆直接使用实现类,JavaMailSenderImpl。笔者是使用的JavaMailSenderImpl对象,功能丰富。

声明JavaMailSenderImpl对象,并在构造函数中初始化(当然也可以使用IoC容器初始化):

public class SpringMailSender {  // Spring的邮件工具类,实现了MailSender和JavaMailSender接口  private JavaMailSenderImpl mailSender;  public SpringMailSender() {  // 初始化JavaMailSenderImpl,当然推荐在spring配置文件中配置,这里是为了简单  mailSender = new JavaMailSenderImpl();  // 设置参数  mailSender.setHost("smtp.qq.com");  mailSender.setUsername("786553789@qq.com");  mailSender.setPassword("556WULI779");  ...

得到了MailSender对象之后,就可以发送邮件了,下面是示例代码,没有封装,仅供参考。

1、发送简单邮件

/**  * 简单邮件发送  *  */ public void simpleSend() {  // 构建简单邮件对象,见名知意  SimpleMailMessage smm = new SimpleMailMessage();  // 设定邮件参数  smm.setFrom(mailSender.getUsername());  smm.setTo("mosaic@126.com");  smm.setSubject("Hello world");  smm.setText("Hello world via spring mail sender");  // 发送邮件  mailSender.send(smm);  }

2、发送带附件的邮件

/**  * 带附件的邮件发送  *  * @throws MessagingException  */ public void attachedSend() throws MessagingException {  //使用JavaMail的MimeMessage,支付更加复杂的邮件格式和内容  MimeMessage msg = mailSender.createMimeMessage();  //创建MimeMessageHelper对象,处理MimeMessage的辅助类  MimeMessageHelper helper = new MimeMessageHelper(msg, true);  //使用辅助类MimeMessage设定参数  helper.setFrom(mailSender.getUsername());  helper.setTo("mosaic@126.com");  helper.setSubject("Hello Attachment");  helper.setText("This is a mail with attachment");  //加载文件资源,作为附件  ClassPathResource file = new ClassPathResource(  "Chrysanthemum.jpg");  //加入附件  helper.addAttachment("attachment.jpg", file);  //发送邮件  mailSender.send(msg);  }

3、发送富文本邮件

/**发送富文本邮件  * @throws MessagingException  */ public void richContentSend() throws MessagingException {  MimeMessage msg = mailSender.createMimeMessage();  MimeMessageHelper helper = new MimeMessageHelper(msg, true);  helper.setFrom(mailSender.getUsername());  helper.setTo("mosaic@126.com");  helper.setSubject("Rich content mail");  //第二个参数true,表示text的内容为html,然后注意标签,src='cid:file','cid'是contentId的缩写,'file'是一个标记,需要在后面的代码中调用MimeMessageHelper的addInline方法替代成文件  helper.setText(  "

Hello Html Email

", true); FileSystemResource file = new FileSystemResource( "C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg"); helper.addInline("file", file); mailSender.send(msg); }

4、使用Velocity模板确定邮件风格

使用Velocity模板,需要Velocity的jar包,可以在官方网站下载,并加入ClassPath,然后需要声明一个VelocityEngine对象,具体的参考下面代码,这是笔者***次使用Velocity,不甚了解,言多有失,望见谅。

声明一个VelocityEngine对象,并在构造函数中初始化(IoC is optional)

...  private VelocityEngine velocityEngine;  public SpringMailSender() {  ...  // Velocity的参数,通过VelocityEngineFactoryBean创建VelocityEngine,也是推荐在配置文件中配置的  Properties props = System.getProperties();  props.put("resource.loader", "class");  props  .put("class.resource.loader.class",   "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");  VelocityEngineFactoryBean v = new VelocityEngineFactoryBean();  v.setVelocityProperties(props);  try {  velocityEngine = v.createVelocityEngine();  } catch (VelocityException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }

简单的Velocity模板文件(index.vm):

     
${user}

${content}

开起来貌似很容易理解,只是普通的Html文件,使用了一些${placeholder}作为占位符。

Java要做的,就是加载模板,并将相应的值插入到占位符当中。

/**  * 使用Velocity模板发送邮件  *  * @throws MessagingException  */ public void templateSend() throws MessagingException {  // 声明Map对象,并填入用来填充模板文件的键值对  Map model = new HashMap();  model.put("user", "MZULE");  model.put("content", "Hello");  // Spring提供的VelocityEngineUtils将模板进行数据填充,并转换成普通的String对象  String emailText = VelocityEngineUtils.mergeTemplateIntoString(  velocityEngine, "index.vm", model);  // 和上面一样的发送邮件的工作  MimeMessage msg = mailSender.createMimeMessage();  MimeMessageHelper helper = new MimeMessageHelper(msg, true);  helper.setFrom(mailSender.getUsername());  helper.setTo("mosaic@126.com");  helper.setSubject("Rich content mail");  helper.setText(emailText, true);   mailSender.send(msg);  }

Spring可谓是大大简化了邮件的发送步骤,虽然我们自己封装可能实现起来并不复杂,但是,有现成的有何必要重新造轮子呢?

上述就是小编为大家分享的怎么用Spring让Java Mail支持简化邮件发送了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

邮件 对象 文件 模板 配置 代码 参数 附件 支持 内容 接口 复杂 普通 函数 就是 文本 方法 核心 笔者 编码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 龙岗网络安全宣传视频 完美服务器被攻击 华为2288hv2服务器1U 网络安全教育演讲比赛500字 海口信息安全实战网络安全培训 长宁区媒体软件开发哪家便宜 注册网络安全等级测评工程师认证 剑灵捏脸数据库丘林 黄岛区建站宝网络技术服务中心 热敏纸打印 软件开发 科技与互联网概念股 避免软件开发过程中的缺陷 苹果手机登录失败服务器繁忙 远程服务器可以承载的人数 公需课网络安全监管体系构建策略 汽车网络技术教学大纲 为网络安全指明了发展方向 广播站的网络技术部的面试 郑州洛基软件开发有限公司 加强疫情期间网络安全 手机软件开发百度百科 兰州鲲鹏服务器 数据库可以开发的软件有哪些 湖北人工智能软件开发服务 服务器一般安装什么系统 攻击服务器犯法 软件开发费走账 豫苗通服务器忙 数据库外键关系的影响 2k21端游无法连接服务器
0