Spring Boot之发送邮件

Spring Boot之发送邮件


Spring Boot之发送邮件

一、邮件服务简介

邮件服务在互联网早期就已经出现,如今已成为人们互联网生活中必不可少的一项服务。那么邮件服务是怎么工作的呢?如下给出邮件发送与接收的典型过程:


1、发件人使用SMTP协议传输邮件到邮件服务器A;
2、邮件服务器A根据邮件中指定的接收者,投送邮件至相应的邮件服务器B;
3、收件人使用POP3协议从邮件服务器B接收邮件。


SMTP(Simple Mail Transfer Protocol)是电子邮件(email)传输的互联网标准,定义在RFC5321,默认使用端口25;
POP3(Post Office Protocol - Version 3)主要用于支持使用客户端远程管理在服务器上的电子邮件。定义在RFC 1939,为POP协议的第三版(最新版)。
这两个协议均属于TCP/IP协议族的应用层协议,运行在TCP层之上。
我们日常收发邮件使用的客户端、Web Mail的背后都在运行着这两个协议,完成收发邮件的过程。而现在我们需要使用SMTP协议来把发送给用户的邮件传输到邮件服务器。
从客户端传输邮件到服务器需要双方的配合,而规则就定义在SMTP协议中。我们现在需要做的是找一个SMTP服务器,再实现一个SMTP客户端,然后让客户端发送邮件到服务器。

4、邮件收发原理(POP3/SMTP)

其实简单的说,POP服务器是用来收信的,而且每个E_mail地址一般只有一个。如果你要同时收取多个

邮箱的信件,就必须挨个设置每个邮箱的POP3服务器地址。你别告诉我找不到,告诉你一个小窍门吧:在你

申请了免费信箱之后,仔细看看它的帮助文件,一般都能找到。至于SMTP服务器,可以理解为就是用来寄信

的,而且大多数SMTP服务器也是免费的,也就是说, 不管你有无E-mail信箱,只要想寄信,随便填上一个

SMTP服务器,就可以寄信了。如果你用OutlookExpress或者其它邮件程序发信,又同时拥有多个免费邮

箱,不必设置多个SMTP服务器,只要选择一个填上就行了,比如新浪邮件提供的服务器就是:smtp.sina.com.cn。


二、配置邮件服务器

本文使用126邮箱测试,在以下界面中开启smtp服务器,设置授权码,在后面代码中会使用到

Spring Boot之发送邮件_第1张图片

三、实现邮件客户端

1)修改pom.xml,添加依赖库

[html]  view plain  copy
  1. <dependency> 
  2.  
  3.     <groupId>org.springframework.boot groupId> 
  4.  
  5.    <artifactId>spring-boot-starter-mailartifactId>  

  6. dependency>  

2)修改application.properties,添加邮箱配置

[html]  view plain  copy
  1.  spring.mail.host=smtp.126.com  

  2.  spring.mail.username=****@126.com 
  3.  
  4. spring.mail.password=password #上面获取设置的授权码 
  5.  
  6. spring.mail.default-encoding=UTF-8  

3)新增MailController
package cn.et;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MailController {

	@Autowired
	private JavaMailSender jms;
	
	@GetMapping("/send")
	public String send(String message){
		SimpleMailMessage mailMessage= new SimpleMailMessage();
		mailMessage.setFrom("[email protected]");
		mailMessage.setTo("[email protected]");
		mailMessage.setSubject("大龙邮件");
		mailMessage.setText("hai dalong");
		jms.send(mailMessage);
		return "1";
	}
}


package cn.et;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Main {

	public static void main(String[] args) {
		SpringApplication.run(Main.class, args);
	}
}

4)运行测试
浏览器中输入
http://localhost:8080/send

查看邮箱可以收到刚发送的邮件

Spring Boot之发送邮件_第2张图片



你可能感兴趣的:(SpringCloud)