JavaMail是提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。

1. JavaMail的基本概述

1.1 邮件开发的相关协议

  • Ø SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议(25号端口)。
  • Ø POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,是TCP/IP协议族中的一员(默认端口是110)。
  • Ø IMAP全称是Internet Mail Access Protocol,即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一

1.2 IMAP和POP3有什么区别?

  • POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、删除邮件、标记已读等),不会反馈到服务器上,比如通过客户端收取了邮箱中的3封邮件并移动到其他文件夹,邮箱服务器上的这些邮件是没有同时被移动的 。
  • IMAP提供webmail 与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。

1.3POP3/IMAP、SMTP之间的区别和联系

简单地说,SMTP管“发”,POP3/IMAP管“收”

举个例子,你坐在电脑边用mail client写完邮件,点击‘发送’。这时你的mail client会发消息给邮件服务器上的SMTP service。这时有两种情况:

  • 1. 如果邮件的收信人也是处于同一个domain,比如从http://163.com发送给163的邮箱,SMTP service只需要转给local的POP3 Service即可
  • 2. 如果邮件收信人是另外的domain,比如http://163.com发送给http://sina.com, SMTP service需要通过询问DNS,找到属于sina的SMTP service的host
  • 其实一般每个提供电子邮件服务的网站都有自己的SMTP和POP服务器地址,在你登录你的电子邮件网站时仔细找找肯定能发现它们,如果找不到还可以查看一下网站的“帮助”。

使用javaMail需要你得邮箱申请开通POP3/SMTP服务,sina邮箱为例

在spring中引入需要加入mail.properties配值文件

mail.host=smtp.126.com
mail.username=你的邮箱账户
mail.password=你的邮箱密码
mail.from=你的邮箱

接着applicationContext-mail.xml文件

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage"><property name="from"><value>${mail.from}</value></property><!-- 查看SimpleMailMessage源码还可以注入标题,内容等 --></bean><!-- 声明JavaMailSenderImpl对象 --><bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"><property name="defaultEncoding" value="UTF-8" /><property name="host" value="${mail.host}" /><property name="username" value="${mail.username}" /><property name="password" value="${mail.password}" /><property name="javaMailProperties"><props><!-- 设置认证开关 --><prop key="mail.smtp.auth">true</prop><!-- 启动调试开关 --><prop key="mail.debug">true</prop><!-- 设置发送延时 --><prop key="mail.smtp.timeout">0</prop></props></property></bean>
</beans>

发送简答得邮件,需要你在spring配置dao读取数据库中读取数据库配置文件上加入

<context:property-placeholder location="classpath:db.properties,classpath:mail.properties" />

发送简单得文件可以测试

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-mail.xml")
public class MailSendTest {@Autowiredprivate MailSender mailSender;@Autowiredprivate SimpleMailMessage simpleMailMessage;@Testpublic void SingleMailSend (){simpleMailMessage.setSubject("你好");simpleMailMessage.setText("这个是一个通过Spring框架来发送邮件的小程序");simpleMailMessage.setTo("要发给的邮箱号");mailSender.send(simpleMailMessage);}
}

带图片的发送

 @Testpublic void ImageMailSend () throws MessagingException {JavaMailSenderImpl sender = (JavaMailSenderImpl)mailSender;MimeMessage mailMessage = sender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true);messageHelper.setFrom("发送的邮箱");messageHelper.setTo("要发送到的邮箱");messageHelper.setSubject("测试邮件中嵌套图片!!");// true 表示启动HTML格式的邮件messageHelper.setText("<html><body><h1>hello!!spring image html mail</h1>"+"<img src=cid:image/></body></html>", true);FileSystemResource img = new FileSystemResource(new File("d://1.png"));messageHelper.addInline("image", img);//跟cid一致sender.send(mailMessage);System.out.println("邮件发送成功...");}

javamail 解码 base64 html格式邮件_Spring整合javaMail相关推荐

  1. javamail 解码 base64 html格式邮件_[源码和文档分享]基于JavaMail的邮件收发系统

    摘 要 电子邮件在当今社会中扮演了一个很重要的角色.越来越多的人在使用它.而且用它的人数势必会继续增加.本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和 ...

  2. javamail 解码 base64 html格式邮件_python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...

  3. ssh项目实战----Spring计时器任务 Spring整合JavaMail(邮件发送)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  4. 【struts2+hibernate+spring项目实战】Spring计时器任务 Spring整合JavaMail(邮件发送)(ssh)

    一.常用数据频度维护 对于系统使用度较高的数据,客户在查看时希望这些数据最好先出现,此时需要为其添加排序规则.在进行排序时,使用次数成为排序的依据.因此需要设置一个字段用来描述某种数据的使用次数,也就 ...

  5. SpringBoot整合Javamail实现邮件发送

    博客主页:踏风彡的博客 博主介绍:一枚在学习的大学生,希望在这里和各位一起学习. 所属专栏:SpringBoot学习笔记 文章创作不易,期待各位朋友的互动,有什么学习问题都可在评论区留言或者私信我,我 ...

  6. java实现邮件发送_基于JavaMail的Java实现简单邮件发送功能

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  7. java 对.EML格式邮件文件解析

    使用 Apache James Mime4J <dependency><groupId>org.apache.james</groupId><artifact ...

  8. 利用Spring框架封装的JavaMail现实同步或异步邮件发送

    利用Spring框架封装的JavaMail现实同步或异步邮件发送 作者:张纪豪 J2EE简单地讲是在JDK上扩展了各类应用的标准规范,邮件处理便是其中一个重要的应用.它既然是规范,那么我们就可以通过J ...

  9. Java Mail+Thymeleaf模板引擎实现发送HTML格式邮件

    Java Mail+Thymeleaf模板引擎实现发送HTML格式邮件 基于Spring boot 1.5,Spring boot 2.x请使用Spring boot mail 1.依赖坐标 // b ...

最新文章

  1. TensorFlow支持Unicode,中文NLP终于省心了
  2. 年终总结,程序员票选最喜欢的编程语言花落谁家?
  3. 通过一组RESTful API暴露CQRS系统功能
  4. UE4 控制台管理器: 在C++中设置控制台变量
  5. HtmlEditor在Blazor中编写
  6. echarts时间散点图_ECharts 实现地图散点图(下)
  7. 怎么实现单点登录?面试必问!
  8. 从 Promise、Async/Await 、Generator等角度实现一个 sleep 函数
  9. ubuntu20.4 安装配置teamviewer
  10. 5gwifi信道哪个最好,wifi信道在哪里设置如何检测哪个路由器信道最快
  11. linux brctl
  12. 怎样设置和检测浏览器语言
  13. MaterialDrawer库的Gradle配置
  14. 第十届“中国电机工程学会杯”全国大学生电工数学建模竞赛 B 题 全面二孩政策对我国人口结构的影响
  15. Loadrunner报错汇总
  16. KDC Server安装
  17. 台式计算机主机内置喇叭不响,台式机扬声器没声音怎么样解决
  18. 总结100+前端优质库,让你成为前端百事通
  19. jME发布java 3D游戏引擎:jMonkeyEngine version 2.0
  20. 一线城市nbsp;ornbsp;二线城市?(目前为止…

热门文章

  1. Redis遍历所有key的两个命令 -- KEYS 和 SCAN
  2. idea无法正常使用SVN的解决方法
  3. HTTP::Request
  4. JDK使用最多的模式之一--观察者模式
  5. 信息安全系统设计基础实验二:固件设计(20135229,20135234)
  6. C#中Thread.sleep()
  7. Docker容器的数据卷备份与恢复
  8. H3C | S6X00系列交换机策略路由配置案例
  9. Springboot,log文件配置时,logging.file.name与logging.file
  10. 使用mysql导入数据