学习springboot如何整合javamail发送邮件。
学习邮件发送之前先了解3个概念,这些概念规范了邮件操作过程中的标准。
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议,用于发送电子邮件的传输协议
POP3(Post Office Protocol - Version 3):用于接收电子邮件的标准协议
IMAP(Internet Mail Access Protocol):互联网消息协议,是POP3的替代协议
目录
1、简单邮件
1)导入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2)配置邮箱登录信息
spring:
mail:
username: xxxxxxxxx@qq.com
password: lwcjdohgaeclfdea
host: smtp.qq.com
密码不是qq密码,需要通过邮箱获取
java程序仅用于发送邮件,邮件的功能还是邮件供应商提供的,所以这里是用别人的邮件服务,要配置对应信息。
host配置的是提供邮件服务的主机协议,当前程序仅用于发送邮件,因此配置的是smtp的协议。
password并不是邮箱账号的登录密码,是邮件供应商提供的一个加密后的密码,也是为了保障系统安全性。不然外部人员通过地址访问下载了配置文件,直接获取到了邮件密码就会有极大的安全隐患。有关该密码的获取每个邮件供应商提供的方式都不一样,此处略过。可以到邮件供应商的设置页面找POP3或IMAP这些关键词找到对应的获取位置。
3)获取密码步骤:
1、进入到邮箱
2、开启服务
3、发送配置邮件客户端短信给1069070069,点击确定,生成一个码
4、将该码粘贴到password
4)使用JavaMailSender接口发送邮件
将发送邮件的必要信息(发件人、收件人、标题、正文)封装到SimpleMailMessage对象中,可以根据规则设置发送人昵称等。
public interface SendMailService {
void sendMail();
}
@Service
public class SendMailServiceImpl implements SendMailService {
@Autowired
private JavaMailSender javaMailSender;
//发送人
private String from = "test@qq.com";
//接收人
private String to = "test@126.com";
//标题
private String subject = "测试邮件";
//正文
private String context = "测试邮件正文内容";
@Override
public void sendMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from+"(小甜甜)");
message.setTo(to);
message.setSubject(subject);
message.setText(context);
javaMailSender.send(message);
}
}
5)测试发送
@SpringBootTest
class MailBootApplicationTests {
@Autowired
private SendMailService sendMailService;
@Test
void contextLoads() {
sendMailService.sendMail();
}
}
2、多组件邮件(附件、复杂正文)
1)创建一个serviceimpl
@Service
public class SendMailServiceImpl2 implements SendMailService {
@Autowired
private JavaMailSender javaMailSender;
//发送人
private String from = "myQQ@qq.com";
//接收人
private String to = "my126@126.com";
//标题
private String subject = "测试邮件";
//正文中带有链接和图片
private String context = "<img src='https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fbkimg.cdn.bcebos.com%2Fpic%2F8326cffc1e178a82b9018131e84f648da97739124247&refer=http%3A%2F%2Fbkimg.cdn.bcebos.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1645001879&t=f4d8895e53576eacf54605dcc63c6861'/><a href='https://www.itcast.cn'>点开有惊喜</a>";
@Override
public void sendMail() throws MessagingException {
MimeMessage message = javaMailSender.createMimeMessage();
//设置允许发附件邮件——multipart:true
MimeMessageHelper helper = new MimeMessageHelper(message,true);
helper.setFrom(from+"(小甜甜)");
helper.setTo(to);
helper.setSubject(subject);
//设置正文支持html格式
helper.setText(context,true);
//添加附件
//添加一个压缩包
File f1 = new File("E:\\百度\\Everything-1.4.1.1022.x64.zip");
//添加一张图片
File f2 = new File("D:\\11.jpg");
helper.addAttachment(f1.getName(),f1);
helper.addAttachment("美女图片.jpg",f2);
javaMailSender.send(message);
}
}
2)测试
代码不变
结果:
邮箱中出现了结果
好了,我的分享到此结束,欢迎点赞、评论、关注!!!