使用spring实现邮件的发送实例(含测试,源码,注释)

此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看:

先写个接口

 /**
* @Title: IMailserdService.java
* @Package org.service
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com
* @date 2017-5-30 上午10:36:34
* @version V1.0
*/
package org.service; 

 /**
 *
 * 项目名称:spring_Schop8
 * 类名称:IMailserdService
 * 类描述:
 * 创建人:Mu Xiongxiong
 * 修改备注:
 * @version
 *
 */
public interface IMailsendService { 

 /**
  *
 * @Title: sendMessage
 * @Description: 该方法的主要作用:发送邮件
 * @param 设定文件
 * @return 返回类型:void
 * @throws
  */
 void sendMessage();
}

然后在写个实现该接口的类:

 /**
* @Title: AttMailsendServiceImpl.java
* @Package org.service.impl
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com
* @date 2017-5-30 上午11:12:02
* @version V1.0
*/
package org.service.impl; 

import java.io.IOException; 

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; 

import org.service.IMailsendService;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper; 

 /**
 *
 * 项目名称:spring_Schop8
 * 类名称:AttMailsendServiceImpl
 * 类描述: 使用spring实现对邮件的发送
 * 创建人:Mu Xiongxiong
 * 修改备注:
 * @version
 *
 */
public class AttMailsendServiceImpl implements IMailsendService { 

 private JavaMailSender javaMailSender; 

 /**(非 Javadoc)
  * <p>Title: sendMessage</p>
  * <p>Description(描述):发送带附件的邮件 </p>
  * @see org.service.IMailsendService#sendMessage()
  */ 

 @Override
 public void sendMessage() {
  MimeMessage message = javaMailSender.createMimeMessage();
  MimeMessageHelper helper;
  try {
   helper = new MimeMessageHelper(message,true,"utf-8");
   helper.setFrom("jerry@mail.com");
   helper.setTo("tina@mail.com");
   helper.setSubject("带附件的邮件");
   //普通格式的
   //helper.setText("发送一个附件内容!<a href='http://www.baidu.com'>百度搜索</a>");
   //html格式的
   helper.setText("发送一个附件内容!<a href='http://www.baidu.com'>百度搜索</a>",true);
   //添加附件1
   ClassPathResource file1 = new ClassPathResource("/org/doc/doc.txt");
   helper.addAttachment(file1.getFilename(),file1.getFile());
   //添加附件2
   ClassPathResource file2 = new ClassPathResource("/org/doc/text.txt");
   helper.addAttachment(file2.getFilename(), file2.getFile());
   javaMailSender.send(message); 

  } catch (MessagingException e) {
   // TODO 异常执行块!
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 异常执行块!
   e.printStackTrace();
  } 

 } 

 public JavaMailSender getJavaMailSender() {
  return javaMailSender;
 } 

 public void setJavaMailSender(JavaMailSender javaMailSender) {
  this.javaMailSender = javaMailSender;
 } 

}

上面的这个类还可以发送带附件的邮件,里面含两个附件(文件),我弄上来吧:

还有一种是使用模板发送带html格式的邮件:

我直接上实现类:

 /**
* @Title: CreateMatterServiceImpl.java
* @Package org.service.impl
* @Description: TODO该方法的主要作用:
* @author A18ccms A18ccms_gmail_com
* @date 2017-5-30 上午11:46:53
* @version V1.0
*/
package org.service.impl; 

import java.io.IOException;
import java.util.HashMap;
import java.util.Map; 

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage; 

import org.service.IMailsendService;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; 

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException; 

 /**
 *
 * 项目名称:spring_Schop8
 * 类名称:CreateMatterServiceImpl
 * 类描述:
 * 创建人:Mu Xiongxiong
 * 修改备注:
 * @version
 *
 */
public class CreateMatterServiceImpl implements IMailsendService { 

 private JavaMailSender javaMailSender;
 private Configuration configuration; 

 /**(非 Javadoc)
  * <p>Title: sendMessage</p>
  * <p>Description(描述):使用后模板发送邮件 </p>
  * @see org.service.IMailsendService#sendMessage()
  */ 

 @Override
 public void sendMessage() {
  MimeMessage message = javaMailSender.createMimeMessage();
  try {
   MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8");
   helper.setFrom("jerry@mail.com");
   helper.setTo("tina@mail.com");
   helper.setSubject("使用模板进行发送邮件");
   helper.setText(getText(),true);
   //从模板里面读取
   javaMailSender.send(message);
  } catch (MessagingException e) {
   // TODO 异常执行块!
   e.printStackTrace();
  }
 } 

 //读取模板
 private String getText(){
  String txt = "";
  try {
   Template template = configuration.getTemplate("mail.ftl");
   //通过map传递动态数据
   Map map = new HashMap();
   map.put("username","雄雄");
   //解析模板文件
   txt = FreeMarkerTemplateUtils.processTemplateIntoString(template,map);
   } catch (IOException e) {
   // TODO 异常执行块!
   e.printStackTrace();
  } catch (TemplateException e) {
    // TODO 异常执行块!
    e.printStackTrace();
   } 

  return txt;
 } 

 public JavaMailSender getJavaMailSender() {
  return javaMailSender;
 } 

 public void setJavaMailSender(JavaMailSender javaMailSender) {
  this.javaMailSender = javaMailSender;
 } 

 public Configuration getConfiguration() {
  return configuration;
 } 

 public void setConfiguration(Configuration configuration) {
  this.configuration = configuration;
 } 

}

模板文件如下:

然后在看看spring里面是怎么配置的呢?

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> 

 <bean id="mailsender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  <property name="host" value="mail.com"></property>
  <property name="port" value="25"></property>
  <property name="username" value="jerry"></property>
  <property name="password" value="123" ></property>
  <property name="protocol" value="smtp"></property>
  <property name="defaultEncoding" value="utf-8"></property>
  <property name="javaMailProperties">
   <props>
    <prop key="mail.smtp.auth">true</prop>
   </props>
  </property>
 </bean> 

 <!-- 配置FreeMarker-->
 <bean id="freeMarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
  <!-- 指定模板文件路径 -->
  <property name="templateLoaderPath" value="org/doc/"></property>
  <!-- 设置freekMarker环境变量 -->
  <property name="freemarkerSettings">
   <props>
    <prop key="default_encoding">UTF-8</prop>
   </props>
  </property>
 </bean>
 <!-- 简单邮件 -->
 <bean id="simpleMailsendService" class="org.service.impl.SimpleMailsendServiceImpl">
  <property name="sender" ref="mailsender"></property>
 </bean>
 <!-- html和带附件的邮件 -->
 <bean id="AttMailsendService" class="org.service.impl.AttMailsendServiceImpl">
  <property name="javaMailSender" ref="mailsender"></property>
 </bean>
 <!-- 使用模板发送邮件-->
 <bean id="createMatterService" class="org.service.impl.CreateMatterServiceImpl">
  <property name="configuration" ref="freeMarkerConfiguration"></property>
  <property name="javaMailSender" ref="mailsender"></property>
 </bean> 

</beans>

当前时间已经是00点多了,又累又困,我就不详细解释这个applicationContexct.xml里面的内容了,里面有注释,看不懂的可以评论,我第一时间改进!

接着我们测试一下:

TestMail:

package org.test; 

import org.junit.Test;
import org.service.IMailsendService;
import org.service.impl.Mail;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class TestMail { 

 @Test
 public void testMail() {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  //简单邮件
  //IMailsendService mailsendService=(IMailsendService) ctx.getBean("simpleMailsendService"); 

  //复杂邮件
  //IMailsendService mailsendService=(IMailsendService) ctx.getBean("AttMailsendService"); 

  //使用模板的文件
  IMailsendService mailsendService=(IMailsendService) ctx.getBean("createMatterService");
  mailsendService.sendMessage();
  System.out.println("发送成功!");
 } 

}

注明一下:简单邮件是直接发的文本内容,复杂邮件是包含html格式和附件的,模板发送是html格式的另一种方式,我们来看看运行的结果:

先看看带附件,还有html格式的邮件:

接下来是简单邮件:

接下来的一种是使用模板发送邮件,用户名是动态上去的:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    快速入门 在Spring Boot的工程中的pom.xml中引入spring-boot-starter-mail依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 如其他自动化配置模块一样,在完成了依赖引入之后,只需要在applicatio

  • spring mail借助qq邮箱服务器发送邮件

    spring mail封装了javaMail的邮件服务,让邮件服务使用起来更简单,下面以qq邮箱服务器为例,用spring mail服务来发送邮件 配置qq邮箱,"设置"--"账户",打开smtp服务,生成授权码 生成授权码需要验证手机,接下来用qq邮箱账号和授权码就可以发送邮件了,不需要qq密码 spring mail服务在spring-context-support中,配置依赖,然后就可以借助qq邮箱提供的发件服务器发送邮件了 <dependency>

  • 使用spring mail发送html邮件的示例代码

    序 本文展示一下如何使用spring mail来发送html邮件. maven <!-- email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 发送图片 public void send(String from, St

  • Java使用Spring发送邮件的实现代码

    Spring Email抽象的核心是MailSender接口,MailSender的实现能够通过连接Email服务器实现邮件发送的功能,如下图: Spring自带一个MailSender的实现就是JavaMailSenderImpl,它也是使用JavaMail API来发送Email,在使用之前,必须先将JavaMailSenderImpl装配为Spring应用上下文中的一个bean,如下所示: @Bean public MailSender mailSender (Environment en

  • Java的Spring框架中实现发送邮件功能的核心代码示例

    Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller.action等地方. 下面是配置: <!-- mail sender --> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="${mail.host}" p:port="${mail.por

  • 使用spring实现邮件的发送实例(含测试,源码,注释)

    此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看: 先写个接口 /** * @Title: IMailserdService.java * @Package org.service * @Description: TODO该方法的主要作用: * @author A18ccms A18ccms_gmail_com * @date 2017-5-30 上午10:36:34 * @version V1.0 */ package org.s

  • C# 动态输出Dos命令执行结果的实例(附源码)

    本文以一个简单的小例子讲解如何将命令行信息实时的输出到文本框中.仅供学习分享使用,如有不足之处,还请指正. 概述 在C#程序开发过程中,有时需要运行其它的程序并获得输出的结果来进行进一步的处理.一般第三方的程序,主要通过进程来调用,如果能够获取第三方程序执行过程中的信息,就显得方便而有用. 涉及知识点: 进程相关类: Process,ProcessStartInfo,主要设置进程的重定向输出,以及接受数据的事件. 文本框操作:多行显示,滚动条总在最下面 效果图 如下[如果命令执行完毕,会自动结束

  • 快速搭建Spring Boot+MyBatis的项目IDEA(附源码下载)

    如何快速构建一个Spring Boot的项目工具 ideaJDK版本 1.8Spring Boot 版本 1.5.9环境搭建实现:最基础前端可以访问到数据库内的内容 开始 1.IDEA 内部新建一个项目,项目类型选择Spring Initializr,Project SDK选择适合你当前环境的版本,这里我选择的是1.8(Spring Boot 2.0以上的版本,JDK选择请选择1.8即以上版本),构建服务选择默认就好,点击Next 2.填写Group和Artifact(此处我使用的是默认,请根据

  • 最优雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用(附源码)

    这里使用 Maven 项目管理工具构建项目 初始化项目 打开 Intellij IDEA,点击 Create New Project 选择 Maven 构建项目 选择 JDK 版本 选择 maven-archetype-webapp 模板(Java Web 项目) 填写项目在 Maven 仓库中的坐标(在 Maven 仓库中根据这个坐标才能找到该项目) 选择 Maven 路径 选择 Maven 配置文件路径 选择 Maven 本地仓库路径 填写项目名 选择工作目录 创建目录 在 src > ma

  • Qt写入Json文件的方法详解(含源码+注释)

    目录 一.示例Json文件内容 二.Json写入会使用的类(介绍写入所使用的类在本文中的作用,个人理解) 三.Json文件的写入 3.1 常规类型的写入 3.2 对象及数组类型的添加 3.3 Json串写入文件 总结 一.示例Json文件内容 下方为本文所使用的Json文件的内容,其中包含字符串.数值.布尔.null.对象.数组等(写入方式在本文第三节) { "array": [ "str", 88, null ], "bool": true,

  • Qt读写ini文件的方法详解(含源码+注释)

    目录 一.示例Ini文件内容 二.Ini文件的写入 三.Ini文件的读取 3.1 第一种读取方式 3.2 第二种读取方式 3.3 读取结果示例 补充:获取所有节点和key以及节点的遍历 相关文章 总结 一.示例Ini文件内容 下方为本文所使用的ini文件的内容 [group1] key1=val1 key2=val2 sameKay=sameVal [group2] jian1=zhi1 jian2=zhi2 sameKay=sameZhi 二.Ini文件的写入 ini文件不需要像xml和jso

  • jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)

    弹出层用来向用户展示详细的信息,交互性非常强.弹出层有对话框.模态窗口等形式,这里我都把他们叫做弹出层,我的同事们也是这么叫的.一般我们喜欢使用比较成熟的弹出层插件如fancybox等,但在本文,我将先抛弃插件,给大家介绍如何使用jQuery+CSS3+Html5实现弹出层. 效果展示       源码下载 我们完全使用HTML5+CSS3+jQuery来实现一个基本的弹出层效果,因此我们可以在示例中任意修改弹出层外观样式.甚至js方法调用.我们最终做出来的弹出层效果应该是响应式的,也就是说可以

  • PHP实现长文章分页实例代码(附源码)

    当文章内容比较长,为了更好的满足用户体验度,我们将文章内容分页显示处理,而一般分页处理是在后台发布文章的时候就将提交的内容生成多个分页后的静态文件.通过本文结合实例采用php动态将长文章内容进行分页处理. 查看效果演示     源码下载 如何分页 手动分页:一般在编辑内容时加入特殊分页标记,如{pages},提交后,PHP程序会根据分页符处理分页,生成不同的静态页面.这种分页方法分页准确,但是需要人工手动添加分页符,工作量大. 自动分页:PHP程序会根据设置好的分页符将内容进行分页,然后生成不同

  • jquery validate.js表单验证入门实例(附源码)

    小编上网查阅了许多关于jquery.validate的文章,大部门只是介绍它的api和用法,没有一个详细的的入门案例介绍,研究了半天还是无从下手.为此,小编自己做了一个jquery validate.js表单验证入门实例,写的不是特别好,但应该适用于初学者,分享给大家. 以下是validate.js表单验证入门实例参考源码,文章下面有源码下载地址: <html> <head> <meta http-equiv="Content-Type" content=

  • ECharts仪表盘实例代码(附源码下载)

    大家在汽车驾驶舱里一眼就可以看到仪表盘,使用使用Echarts制作的仪表盘可以轻松展示用户的数据,清晰的看出某个指标值所在的范围,仪表盘形式的报表应用在各种统计系统中,本文结合实例讲解仪表盘在销售任务完成率的统计应用. 效果演示      源码下载 HTML 首先引入Echarts,然后在需要放置图表的地方加上div#myChart,同时给它加上宽度和高度属性. <script src="echarts.min.js"></script> <div id=

随机推荐