电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,那就必须要遵守一定的规则,这个规则就是邮件传输协议。下面我们分别简单介绍几种协议:
这里我们以QQ邮箱为例,要想在SpringBoot发送QQ邮件必须先打开QQ邮箱的SMTP功能,默认是关闭的,具体操作如下。进入邮箱→设置→账户,然后找到下面这个
这里有个验证
验证完成之后
这里我用的是gradle,引入spring-boot-starter-mail模块
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '2.4.10'
复制代码
application.yml配置
spring:
mail:
# 邮件服务器地址
host: smtp.qq.com
# SMTP 服务器的端口
port: 587
username: 1786087581@qq.com
# 这里的密码是邮件授权码不是邮箱登陆的密码
# 这里的邮件授权码我随便写的
password: aksdfgsdfgxieiig
# 额外的配置,这里我写了两个,只用其中一个就行了,开启ssl加密,保证安全连接
properties:
mail:
smtp:
socketFactory:
class: javax.net.ssl.SSLSocketFactory
## ssl:
## enable :true
#设置邮件的编码为utf-8
default-encoding: utf-8
复制代码
补充: 126邮箱SMTP服务器地址:smtp.126.com,端口号:465或者994 2163邮箱SMTP服务器地址:smtp.163.com,端口号:465或者994 yeah邮箱SMTP服务器地址:smtp.yeah.net,端口号:465或者994 qq邮箱SMTP服务器地址:smtp.qq.com,端口号465或587*
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.io.File;
import java.util.Date;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(value = "邮件接口",tags = "邮件接口",description = "邮件接口")
@RequestMapping("/mail")
public class SendMailController {
@Autowired
JavaMailSender javaMailSender;
@GetMapping("/sendMail")
public void sendMail(){
//构建一个邮件对象
SimpleMailMessage message = new SimpleMailMessage();
//设置邮件主题
message.setSubject("这是一封测试邮件");
//设置邮件发送者
message.setFrom("1786087581@qq.com");
//设置邮件接收者,可以有多个接收者
message.setTo("1******40@qq.com","1*******7@163.com");
//设置邮件抄送人,可以有多个抄送人
message.setCc("6666***8@qq.com");
//设置隐秘抄送人,可以有多个
message.setBcc("l*****3@163.com");
//设置邮件发送日期
message.setSentDate(new Date());
//设置邮件的正文
message.setText("测试邮件正文ok");
//发送邮件
javaMailSender.send(message);
}
复制代码
测试结果 发送成功
@GetMapping("/sendMailWithImg")
@ApiOperation(value = "简单带图片邮件发送",notes = "简单带图片邮件发送",produces = "application/json")
public void sendMailWithImg() throws MessagingException {
//创建一个复杂的邮件
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
//设置邮件主题
helper.setSubject("这是一封带图片测试邮件");
//设置邮件发送者
helper.setFrom("1786087581@qq.com");
//设置邮件接收者
helper.setTo("1******40@qq.com");
//设置邮件抄送人
helper.setCc("6666***8@qq.com");
//设置隐秘抄送人
helper.setBcc("l*****3@163.com");
//设置邮件发送日期
helper.setSentDate(new Date());
//设置邮件的正文
helper.setText("<p>这是一封带图片测试邮件,这封邮件包含两种图片,分别如下</p><p>第一张图片:</p><img src='cid:p01'/><p>第二张图片:</p><img src='cid:p02'/>",true);
helper.addInline("p01",new FileSystemResource(new File("C:\Users\hasee\Desktop\9cae14e699762b40a747d4198.jpg")));
helper.addInline("p02",new FileSystemResource(new File("C:\Users\hasee\Desktop\微信图片_202101.jpg")));
javaMailSender.send(mimeMessage);
}
复制代码
测试结果 发送成功
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。