使用spring提供的MailSender和JavaMailSender类。

1、邮件对象类

  1. package cn.luxh.app.mail;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.core.io.AbstractResource;
  6.  
  7. public class Email {
  8. //发件人
  9. private String from;
  10. //收件人
  11. private String[] to;
  12. //主题
  13. private String subject;
  14. //邮件内容
  15. private String text;
  16. //附件
  17. private List<AbstractResource> resources;
  18.  
  19. //geter seter
  20. //...
  21.  
  22. }

2、邮件发送服务类

  1. package cn.luxh.app.mail;
  2.  
  3. import javax.mail.MessagingException;
  4. import javax.mail.internet.MimeMessage;
  5.  
  6. import org.springframework.core.io.AbstractResource;
  7. import org.springframework.mail.MailSender;
  8. import org.springframework.mail.SimpleMailMessage;
  9. import org.springframework.mail.javamail.JavaMailSender;
  10. import org.springframework.mail.javamail.MimeMessageHelper;
  11.  
  12. public class MailService {
  13.  
  14. //简单的文本邮件发送类
  15. private MailSender mailSender;
  16. //复杂邮件发送类
  17. private JavaMailSender javaMailSender;
  18.  
  19. /**
  20. * 发送简单的文本邮件
  21. * @param email
  22. */
  23. public void send(Email email){
  24. SimpleMailMessage smm = new SimpleMailMessage();
  25. smm.setFrom(email.getFrom());
  26. smm.setSubject(email.getSubject());
  27. smm.setTo(email.getTo());
  28. smm.setText(email.getText());
  29. mailSender.send(smm);
  30.  
  31. }
  32.  
  33. /**
  34. * 发送复杂邮件
  35. * @param email
  36. * @throws MessagingException
  37. */
  38. public void sendMime(Email email) throws MessagingException{
  39. MimeMessage mm = javaMailSender.createMimeMessage();
  40. //加上编码,解决中文乱码
  41. MimeMessageHelper helper = new MimeMessageHelper(mm,true,"GB2312");
  42.  
  43. helper.setFrom(email.getFrom());
  44. helper.setTo(email.getTo());
  45. helper.setSubject(email.getSubject());
  46. helper.setText(email.getText(),true);
  47.  
  48. //添加附件
  49. if(email.getResources()!=null && email.getResources().size()>0) {
  50. for(AbstractResource resource:email.getResources()) {
  51. helper.addAttachment(resource.getFilename(), resource);
  52. }
  53. }
  54.  
  55. javaMailSender.send(mm);
  56.  
  57. }
  58.  
  59. public MailSender getMailSender() {
  60. return mailSender;
  61. }
  62.  
  63. public void setMailSender(MailSender mailSender) {
  64. this.mailSender = mailSender;
  65. }
  66.  
  67. public JavaMailSender getJavaMailSender() {
  68. return javaMailSender;
  69. }
  70.  
  71. public void setJavaMailSender(JavaMailSender javaMailSender) {
  72. this.javaMailSender = javaMailSender;
  73. }
  74. }

3、邮件属性配置文件mail.properties

  1. #smtp服务器
  2. mail.host=smtp.163.com
  3.  
  4. #用户名
  5. mail.username=heymenfolk@163.com
  6.  
  7. #密码
  8. mail.password=your password

4、spring配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-3.2.xsd">
  10. <!-- 启用注解支持 -->
  11. <context:annotation-config />
  12.  
  13. <!-- 加载属性文件 -->
  14. <context:property-placeholder location="classpath:mail.properties" />
  15.  
  16. <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
  17. <property name="host" value="${mail.host}"/>
  18. <property name="username" value="${mail.username}"/>
  19. <property name="password" value="${mail.password}"/>
  20. </bean>
  21.  
  22. <bean id="mailService" class="cn.luxh.app.mail.MailService">
  23. <property name="mailSender" ref="javaMailSender"/>
  24. <property name="javaMailSender" ref="javaMailSender"/>
  25. </bean>
  26. </beans>

5、测试

  1. package cn.luxh.app.test;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import javax.mail.MessagingException;
  7.  
  8. import org.junit.Test;
  9. import org.junit.runner.RunWith;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.core.io.AbstractResource;
  12. import org.springframework.core.io.ClassPathResource;
  13. import org.springframework.core.io.FileSystemResource;
  14. import org.springframework.test.context.ContextConfiguration;
  15. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  16.  
  17. import cn.luxh.app.mail.Email;
  18. import cn.luxh.app.mail.MailService;
  19.  
  20. @RunWith(SpringJUnit4ClassRunner.class)
  21. @ContextConfiguration(locations={"classpath:app-mail.xml"})
  22. public class MailTester {
  23.  
  24. @Autowired
  25. private MailService mailService;
  26. @Test
  27. public void testSendMail() {
  28. Email email = new Email();
  29. email.setFrom("heymenfolk@163.com");
  30. email.setTo(new String[]{"21760658@qq.com"});
  31. email.setSubject("简单文本邮件");
  32. email.setText("how are you.i am from china!\r你好,程序猿!!");
  33. mailService.send(email);
  34. }
  35.  
  36. @Test
  37. public void testSendMimeMail() throws MessagingException {
  38. Email email = new Email();
  39. email.setFrom("heymenfolk@163.com");
  40. email.setTo(new String[]{"21760658@qq.com","heymenfolk@outlook.com"});
  41. email.setSubject("复杂邮件");
  42. String text = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"></head><body><h1><a href='http://luxh.cnblogs.com'>我的博客</a></h1></body></html>";
  43. email.setText(text);
  44.  
  45. List<AbstractResource> resources = new ArrayList<AbstractResource>();
  46. //添加附件
  47. ClassPathResource file1 = new ClassPathResource("top1.jpg");
  48. FileSystemResource file2 = new FileSystemResource("d:/中文.txt");
  49. resources.add(file1);
  50. resources.add(file2);
  51. email.setResources(resources);
  52.  
  53. mailService.sendMime(email);
  54. }
  55. }

使用spring的邮件发送功能的更多相关文章

  1. spring-boot-route(二十二)实现邮件发送功能

    在项目开发中,除了需要短信验证外,有时候为了节省 短信费也会使用邮件发送.在Spring项目中发送邮件需要封装复杂的消息体,不太方便.而在Spring Boot项目中发送邮件就太简单了,下面一起来看看 ...

  2. SpringBoot 2.X从0到1实现邮件发送功能

    Spring中提供了JavaMailSender接口实现邮件发送功能,在SpringBoot2.X中也封装了发送邮件相关的Starter并且提供了自动化配置. 本文目录 一.添加对应的Starter二 ...

  3. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  4. 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇

    在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...

  5. redmine邮件发送功能配置详解

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  6. .NET开发邮件发送功能

    .NET开发邮件发送功能 今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知 ...

  7. shell邮件发送功能实现

    本文中以163邮箱为例,测试shell邮件发送功能.常见的工具有:mailx.sendmail.mutt等. 1.设置邮件客户端 (1)启用pop3.smtp服务,以支持第三方客户端支持 (2)设置授 ...

  8. System.Net邮件发送功能踩过的坑

    System.Net邮件发送功能踩过的坑 目录 System.Net邮件发送功能踩过的坑 1.EazyEmail邮件发送类库 2.邮件发送授权码与邮件密码 3.通过邮件密码来发送邮件 4.Wiresh ...

  9. Spring Boot 2.0 图文教程 | 集成邮件发送功能

    文章首发自个人微信公众号: 小哈学Java 个人网站: https://www.exception.site/springboot/spring-boots-send-mail 大家好,后续会间断地奉 ...

随机推荐

  1. WAMP Server助你在Windows上快速搭建PHP集成环境

    WAMP Server助你在Windows上快速搭建PHP集成环境 原文地址 我想只要爬过几天网的同学都会知道PHP吧,异次元的新版本就是基于PHP的WordPress程序制造出来的,还有国内绝大部分 ...

  2. android 工程出现感叹号错误

    android 工程出现感叹号错误: 错误问题分析,曾经导入的jar已经不存在工程目录中,project从其他地方导入时.没有及时更新,比如说svn下载到.project的文件,或者是path的文件. ...

  3. IOS开发-UIBarButtonItem系统自带图标总结

    1.这四个返回的是后面的单词. UIBarButtonSystemItemDone UIBarButtonSystemItemCancel UIBarButtonSystemItemEdit UIBa ...

  4. (转)Lambda表达式详解

    本文转载自:http://www.cnblogs.com/knowledgesea/p/3163725.html 前言 1.天真热,程序员活着不易,星期天,也要顶着火辣辣的太阳,总结这些东西. 2.夸 ...

  5. can't run as root without the -u switch

    [root@localhost ~]# /usr/local/memcache/bin/memcached can't run as root without the -u switch [root@ ...

  6. Linux下文件的压缩和解压

    tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...

  7. Filezilla Server 配置大全

    一个开源.免费的FTP服务端程序,Windows 安装程序(0.9.50 beta):右键另存为. 首先说一下FTP的二种模式:主动模式(port mode)与被动模式(passive mode),网 ...

  8. linux 鼠标中键粘帖功能?!!

    转载自:http://yjhexy.iteye.com/blog/785564 ubuntu鼠标中键问题,其实也不是什么问题,ubuntu的鼠标中键是用来快速粘贴的,只是windows用惯了,时不时手 ...

  9. window下部署php_redis扩展

    关于redis的一些特性就不多说了,可以到这里去了解,or click me. 另外,给出一个redis中文API,点我. 首先要下载一个redis软件,可以到官网下载. 注意:官网提供的版本比较高级 ...

  10. 黄聪:C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果) (转)

    一.各种旋转.改变大小 注意:先要添加画图相关的using引用. //向右旋转图像90°代码如下:private void Form1_Paint(object sender, System.Wind ...