全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

使用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格式的邮件:


接下来是简单邮件:


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

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


# spring  # 发送邮件  # mail  # spring实现邮件发送  # Spring学习笔记3之消息队列(rabbitmq)发送邮件功能  # Java的Spring框架中实现发送邮件功能的核心代码示例  # springMVC发送邮件的简单实现  # Spring Boot实战之发送邮件示例代码  # Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)  # spring mail借助qq邮箱服务器发送邮件  # Spring+quartz实现定时发送邮件功能实例  # Spring Boot实现邮件发送功能  # Spring实现邮件发送功能  # spring+maven实现邮件发送  # 上午  # 百度搜索  # 几个  # 我就  # 还可以  # 是怎么  # 来看看  # 只需要  # 第一时间  # 来吧  # 看不懂  # 大家多多  # 就可以  # 讲的是  # 往下看  # 邮件发送  # 测试一下  # 先写  # 直接发 


相关文章: 建站之星价格显示格式升级,你的预算足够吗?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何通过虚拟主机快速完成网站搭建?  宁波免费建站如何选择可靠模板与平台?  制作营销网站公司,淘特是干什么用的?  如何选择靠谱的建站公司加盟品牌?  如何在自有机房高效搭建专业网站?  如何快速完成中国万网建站详细流程?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  建站之星安装失败:服务器环境不兼容?  ,南京靠谱的征婚网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  建站OpenVZ教程与优化策略:配置指南与性能提升  如何高效搭建专业期货交易平台网站?  linux top下的 minerd 木马清除方法  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  C++中引用和指针有什么区别?(代码说明)  如何用花生壳三步快速搭建专属网站?  python的本地网站制作,如何创建本地站点?  小程序网站制作需要准备什么资料,如何制作小程序?  实现虚拟支付需哪些建站技术支撑?  建站之星如何实现PC+手机+微信网站五合一建站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  定制建站平台哪家好?企业官网搭建与快速建站方案推荐  已有域名和空间如何搭建网站?  建站ABC备案流程中有哪些关键注意事项?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在搬瓦工VPS快速搭建网站?  建站主机无法访问?如何排查域名与服务器问题  如何在香港服务器上快速搭建免备案网站?  宝塔Windows建站如何避免显示默认IIS页面?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  制作网站的软件免费下载,免费制作app哪个平台好?  网站制作免费,什么网站能看正片电影?  如何快速建站并高效导出源代码?  网站制作公司排行榜,抖音怎样做个人官方网站  建站之星官网登录失败?如何快速解决?  如何在万网自助建站平台快速创建网站?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  ,巨量百应是干嘛的?  西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  网站制作价目表怎么做,珍爱网婚介费用多少?  建站之星免费版是否永久可用?  Python多线程使用规范_线程安全解析【教程】  如何在IIS中新建站点并配置端口与IP地址?  如何用PHP工具快速搭建高效网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  焦点电影公司作品,电影焦点结局是什么?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。