一、java发邮件
- 电子邮件服务器:这些邮件服务器就类似于邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中,按功能划分有两种类型
- SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件
- POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件
- 邮件传输协议:电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,就需遵守一定的规则
- SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则
- POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则
- IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
- 邮件格式:邮件内容的基本格式和具体细节分别是由 RFC822 文档和 MIME 协议定义的
- RFC822文档中定义的文件格式包括两个部分:邮件头和邮件体
- ME协议(Multipurpose Internet Mail Extensions )用于定义复杂邮件体的格式,使邮件的内容更加多样化
- 邮件发送与接收流程
- 邮件客户端软件写好一封邮件,交到SMTP的QQ邮件服务器
- QQ邮箱会解析用户发送的邮件,判断收件地址是否是自己的账户,如果收件也是QQ邮箱,会直接存放到自己的存储空间。如果不是QQ邮箱,而是163邮箱,那么QQ邮箱会将邮件转发到163邮箱服务器,转发协议也是SMTP
- 163邮箱服务器接收到QQ邮箱转发过来的邮件,会判断收件地址是否是自己的,如果是自己的账户,就会将QQ邮箱转发过来的邮件存放到自己的内部存储空间
- 用户A将邮件发送了之后,通知用户B去指定的邮箱收取邮件。用户B会通过邮件客户端软件先向163邮箱服务器请求,要求收取自己的邮件
- 163邮箱服务器收到用户B的请求后,会从自己的存储空间中取出B未收取的邮件
- 163邮箱服务器取出用户B未收取的邮件后,将邮件发给用户B,最后三步用户B收取邮件的过程,使用的协议是POP3
二、使用javax.mail发送邮件(简单,带图片,带附件,带图片和附件)
使用之前应该申请qq邮箱的授权码(第三方的使用时,替代密码)
qq邮箱邮件服务器地址和端口(smtp.qq.com 端口465或587)
导入依赖
邮件的基本信息类
权限认证类
发送邮件工具类
三、使用spring的JavaMailSender发送邮件(简单,带图片,带附件,带图片和附件,freemarker模板)
spring提供的JavaMailSender是对原始的javax.mail进行了简化
再其使用过程中可以注册到spring容器中,也可不用注册
导入依赖
邮件的基本信息类
准备mail.propertise配置文件(也就是设置会话的属性),文件放在resource目录下
加载配置文件,初始化JavaMailSender
邮件发送工具类
四、使用springboot发送邮件
使用springboot发送邮件和使用spring提供的JavaMailSender发送邮件的方式一样
在yml配置文件中配置相关的会话信息后
在service层中直接注入使用即可
导入依赖
修改配置
直接在service层中使用即可