SpringBoot发送Email

1.POP3(Post Office Protocol 3)   POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
2.SMTP(Simple Mail Transfer Protocol, SMTP)   SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。   SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。   增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
3.IMAP(Internet Mail Access Protocol)   即交互式邮件存取协议,它是跟POP3类似邮件访问标准协议之一。不同的是,开启了IMAP后,您在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。

我这里是通过SMTP协议去发送邮件,那么接下来就开始吧,项目创建完毕之后在pom中引入发送邮件的依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>

引入完毕之后,进行配置:
在这里插入图片描述

host 就是对应的邮件服务器地址,不同邮件有不同的地址 username,password 就是你所发送邮件的账号 default-encoding:UTF-8 默认MimeMessage编码

配置完毕之后,创建一个类来进行编写发送邮件的方法,这里就使用JavaMailSender工具来进行发送邮件

1.首先是发送文本邮件

在这里插入图片描述

to 表示发送的地址 subject 发送邮件的主题 content 发送内容 from 由谁发送的,我这里就是获取配置文件中配置的地址

@Test
    public void sendSimpleEmail() {
        sendMailUtil.sendSimpleEmail("2420221622@qq.com", "springboot邮件主题", "Springboot邮件内容");
    }

在这里插入图片描述

2.HTML格式邮件

在这里插入图片描述

HTML格式的邮件跟文本的区别就在于在setText的时候,第二个参数要true,这样就会以html标签去解析发送。

 @Test
    public void sendHtmlMail() throws MessagingException {
        sendMailUtil.sendHtmlMail("2420221622@qq.com", "springboot-HTML邮件主题", "<h1>内容:第一封html邮件</h1>");
    }

在这里插入图片描述

3.附件邮件

在这里插入图片描述

附件邮件多了一个filePath参数,就是要知道附件的路径然后进行发送,如果要发送多个附件就跟图中代码所示的,再加入一个addAttachment,实际的开发中就通过数组来遍历。

@Test
    public void sendAttachmentsMail() throws MessagingException {
        String filePath = "C:/Users/CSea/Desktop/新建文本文档.zip";
        sendMailUtil.sendAttachmentsMail("2420221622@qq.com", "springboot-附件邮件", "这是带附件的邮件", filePath);
    }

在这里插入图片描述

5.图片邮件

在这里插入图片描述

图片邮件跟附件邮件类似,只是把addAttachment变成了addInline,如果要多张图片也是再加入一个addInline。

@Test
    public void sendInlineResourceMail() throws MessagingException {
        String srcPath = "C:/Users/CSea/Desktop/icon.jpg";
        String srcId = "icon";
        String content = "<h1 style='color:red'>helloWorld</h1><img src='cid:" + srcId + "'/><img src='cid:" + srcId + "'/>";
        sendMailUtil.sendInlineResourceMail("2420221622@qq.com", "springboot-图片邮件", content, srcPath, srcId);
    }

在这里插入图片描述

6.模板邮件

我这里使用的是freemaker作为模板引擎,在template下新建一个email.ftl

<html>
<head>
    <meta charset="UTF-8">
    <title>模板邮件</title>
</head>
<body>
<div class="container">
<h2>尊敬的${user}您好:</h2>
    <p>欢迎来到此!</p>
</div>
</body>
</html>

模板写完之后就是要获取到模板然后进行传参赋值,最后解析为html来发送出去

在这里插入图片描述

@Test
    public void testTemplate() throws IOException, TemplateException, MessagingException {
        sendMailUtil.sendHtmlMail("2420221622@qq.com", "springboot-图片邮件", sendMailUtil.testTemplate("张三"));
    }

在这里插入图片描述

其他一些邮箱服务器地址:

126邮箱:

在这里插入图片描述

QQ邮箱:

在这里插入图片描述

163邮箱:
在这里插入图片描述

有关一些其他内容建议还是去看一下各邮箱自己的一些说明文档

在发送时候的常见错误:

421:IP同时并发连接数目过大,个人邮箱是有这个限制的,企业邮箱可以申请(HL:ICC)

451:登录失败多次,被临时禁止登陆(Requested mail action not taken:too much fail)

553:认证失败(authentication is required)

这里只是一个简单的发送Demo,在生产环境时候还是有许多情况需要考虑

源码地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值