一、java发邮件

  1. 电子邮件服务器:这些邮件服务器就类似于邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中,按功能划分有两种类型
    • SMTP邮件服务器:用户替用户发送邮件和接收外面发送给本地用户的邮件
    • POP3/IMAP邮件服务器:用户帮助用户读取SMTP邮件服务器接收进来的邮件
  2. 邮件传输协议:电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,就需遵守一定的规则
    • SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则
    • POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信规则
    • IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议的一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则
  3. 邮件格式:邮件内容的基本格式和具体细节分别是由 RFC822 文档和 MIME 协议定义的
    • RFC822文档中定义的文件格式包括两个部分:邮件头和邮件体
    • ME协议(Multipurpose Internet Mail Extensions )用于定义复杂邮件体的格式,使邮件的内容更加多样化
  4. 邮件发送与接收流程
    • 1.使用javax.mail, spring的JavaMailSender,springboot发送邮件-LMLPHP
      • 邮件客户端软件写好一封邮件,交到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)

  • 导入依赖

  1. 邮件的基本信息类

  2. 权限认证类

  3. 发送邮件工具类

三、使用spring的JavaMailSender发送邮件(简单,带图片,带附件,带图片和附件,freemarker模板)

  • spring提供的JavaMailSender是对原始的javax.mail进行了简化

  • 再其使用过程中可以注册到spring容器中,也可不用注册

  • 导入依赖

  1. 邮件的基本信息类

  2. 准备mail.propertise配置文件(也就是设置会话的属性),文件放在resource目录下

  3. 加载配置文件,初始化JavaMailSender

  4. 邮件发送工具类

四、使用springboot发送邮件

  • 使用springboot发送邮件和使用spring提供的JavaMailSender发送邮件的方式一样

  • 在yml配置文件中配置相关的会话信息后

  • 在service层中直接注入使用即可

  • 导入依赖

  1. 修改配置

  2. 直接在service层中使用即可

11-09 20:57