温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
  • 忘记密码?
登录注册×
获取短信验证码
其他方式登录
点击 登录注册 即表示同意 《亿速云用户服务条款》
  • 服务器
  • 数据库
  • 开发技术
  • 网络安全
  • 互联网科技
登 录 注册有礼
最新更新 网站标签 地图导航
产品
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • 编程语言 > 
  • 使用spring实现邮件的发送实例(含测试,源码,注释)

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

发布时间:2020-10-12 15:49:24 来源:脚本之家 阅读:97 作者:一步一步完善 栏目: 编程语言

此篇主要讲的是使用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; 
 } 
 
} 

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

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

还有一种是使用模板发送带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实现邮件的发送实例(含测试,源码,注释)

然后在看看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实现邮件的发送实例(含测试,源码,注释)

接下来是简单邮件:

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

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

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

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

向AI问一下细节
推荐阅读:
  1. Rails测试《十一》添加邮件发送程序及测试邮件发送程序
  2. python自动发送测试报告邮件功能的实现

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring 邮件 用
  • 上一篇新闻:
    域名怎样绑定虚拟主机
  • 下一篇新闻:
    什么常见的虚拟主机好

猜你喜欢

  • jvm类加载机制怎么实现
  • spring类的加载机制是什么
  • springboot类加载器冲突怎么解决
  • springboot重写源码类不生效怎么解决
  • 怎么解决初始化错误中的Java异常
  • java怎么重写jar包中的方法
  • java给包重命名的方法是什么
  • php中swoft框架的用法是什么
  • php中swoft框架的功能有哪些
  • php中swoft框架的应用场景有哪些
最新资讯
  • 如何在Flask中创建一个基本的路由
  • Flask和Django有什么主要区别
  • Flask框架是什么它的核心理念是什么
  • Lisp中的智能合约开发和区块链应用编程接口如何实现
  • 在Lisp中如何利用计算机视觉技术自动识别和分类图像
  • Lisp语言在教育技术和远程学习平台的开发中如何应用
  • 如何在Lisp中实施基于区块链的安全支付和加密货币交易
  • Lisp中的3D游戏引擎和游戏开发工具有哪些
  • 在Lisp中如何构建精确的天气预测和气候变化模型
  • Lisp语言在环境监测和灾害预警系统中的应用如何开展
相关推荐
  • C++实现含附件的邮件发送功能
  • 使用Spring Boot怎么发送邮件
  • 如何在spring中使用maven发送邮件
  • Spring实现邮件发送功能
  • Android快速实现发送邮件实例
  • Java使用Spring发送邮件的实现代码
  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)
  • 使用Python如何实现发送邮件和发送带附件的邮件
  • 使用PHP怎么测试邮件是否发送成功
  • JavaMail怎么整合Spring实现邮件发送功能

相关标签

springcloud spring cloud spring boot 入门 spring boot springcloud gateway springboot 打war包 spring组件 springboot2.3 springboot学习 spring基础 spring cloud config spring data jpa spring-data-jpa spring cloud gateway springboot2.x springmvc4 springsession SpringBootAdmin SpringData springjpa
AI

聚圣源余额宝的利息艺名起名网免费取名卤肉饭加盟好的公司起名的原则002512股票无名指起了好多小水泡1000个脑筋急转弯皇冠蛋糕起什么名字起名算分数31省区市新增境外输入9例石起什么名字好 男孩瞿姓女孩起名奶茶店起名字宝典属龙开店起名大全现代起名用字cctv6电影频道直播给娃起个小名什么好呀男孩诗词取名起名大全给孩子起名字的软件易奇八字起名上海短租房起名梓有什么寓意浩和昊和皓起名字哪个好通讯公司起名字吗婴儿宝宝起名字测试起名成语美好寓意的武汉宜家犬夜叉第二季起名向阳涵起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化