Hutool发送邮件

简介: Hutool发送邮件

1 依赖

    <!--我使用的SpringBoot版本是2.2.5.RELEASE-->
      <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.4</version>
        </dependency>
         <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.6.2</version>
        </dependency>

2 配置

放在classpath下,我的是springBoot,所以直接放在resources下即可

2.1、内容如下:

# 邮件服务器的SMTP地址
host = smtp.163.com
# 邮件服务器的SMTP的端口
port = 25
# 发件人(必须正确,否则发送失败)
from = xxx@163.com<xxx@163.com>
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
user =xxx@163.com
# 密码
pass = xxx
# 使用STARTTLS安全链接
startttlsEnable = true

3 发送

/**
 * @Author: oldlu
 * @Description:
 **/
public class MailUtilsTest {
    public static void main(String[] args) {
        String text = MailUtil.send("test@163.com", "title.test", "mail.send.test", false, null);
        System.out.println(text);
    }
}

4 总结

使用hutool的发送邮件还是很简单的,它都封装好了,我上面只是发送个文本,当然发送文件,多人发送、抄送、密文都支持,发送速度还可以的。

5 线上遇到的问题

遇到错误:

cn.hutool.extra.mail.MailException: MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 25
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Copy to clipboardErrorCopied

这个错误可能是需要SSL验证造成的也有可能是线上服务器因为阿里云屏蔽了非SSL链接的25发送邮件端口,我们可以手动跳过这个验证:

MailAccount mailAccount = new MailAccount();
mailAccount.setAuth(true);
mailAccount.setSslEnable(true);
...
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
mailAccount.setCustomProperty("mail.smtp.ssl.socketFactory", sf);
Mail mail = Mail.create(mailAccount)
    .setTos("xx@xx.com")
    .setTitle("邮箱验证")
    .setContent("您的验证码是:<h3>2333</h3>")
    .setHtml(true)
    .send();

或者更改短信发送端口为:465

6 实例代码:

 if (StringUtils.isBlank(filePath) && StringUtils.isBlank(fileId)) {
                                MailAccount mailAccount = new MailAccount();
                                mailAccountConfig(mailAccount);
                                sendEmail(email, subject, content, mailAccount, false);
                            }
    private void mailAccountConfig(MailAccount mailAccount) throws GeneralSecurityException {
        mailAccount.setAuth(true);
        mailAccount.setSslEnable(true);
        mailAccount.setHost("smtp.163.com");
        mailAccount.setPort(465);
        mailAccount.setFrom("sdfayuan@163.com");
        mailAccount.setUser("sdfayuan");
        mailAccount.setPass("*******");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        mailAccount.setCustomProperty("mail.smtp.ssl.socketFactory", sf);
    }
目录
相关文章
|
Java Maven 数据安全/隐私保护
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
邮件发送轻松搞定:结合Hutool实现SpringBoot邮件功能
635 0
|
12月前
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
2645 1
|
11月前
|
NoSQL 算法 关系型数据库
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
本文详解分布式全局唯一ID及其5种实现方案,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
|
11月前
|
Java UED Spring
Springboot通过SSE实现实时消息返回
通过Spring Boot实现SSE,可以简单高效地将实时消息推送给客户端。虽然SSE有其限制,但对于许多实时消息推送场景而言,它提供了一种简洁而强大的解决方案。在实际开发中,根据具体需求选择合适的技术,可以提高系统的性能和用户体验。希望本文能帮助你深入理解Spring Boot中SSE的实现和应用。
4693 1
|
XML JSON Java
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
本文介绍了在Spring Boot中如何实现文件上传,包括单文件和多文件上传的实现,文件上传的表单页面创建,接收上传文件的Controller层代码编写,以及上传成功后如何在页面上遍历并显示上传的文件。同时,还涉及了`MultipartFile`类的使用和`@RequestPart`注解,以及在`application.properties`中配置文件上传的相关参数。
springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显
|
12月前
|
机器学习/深度学习 存储 并行计算
深度学习之声纹识别
基于深度学习的声纹识别(Speaker Recognition)是一种通过分析和识别人的声音特征来确认身份的技术。
1906 2
|
Java Spring
SpringBoot: 启动Banner在线生成工具
SpringBoot: 启动Banner在线生成工具
34516 1
SpringBoot: 启动Banner在线生成工具
Java实战:使用Hutool中的MailUtil实现邮件的发送
今天给大家分享使用Hutool中的MailUtil实现邮件的发送,主要实现了发送普通文本邮件、发送Html文件、发送邮件包含本地附件、远程下载附件、指定多个发件人的功能。具体的大家可以互相沟通交流!
Java实战:使用Hutool中的MailUtil实现邮件的发送
|
IDE Linux 开发工具
IntelliJ IDEA2022破解IDEA2022.2永久破解激活教程
IDEA 目前已经更新到最新的 2022.2.2 版本了,群里的小伙伴私聊问我,为啥之前 2021.3.1 的激活套路对新版本 2022.2.2 不管用了,是个什么情况? 很显然,IDEA 官方发现了这种破解路数,新版本加入了更严厉的反制破解。所以说,小伙伴们破解成功了以后,尽量不要升级 IDEA, 不然大概率又不行了。 好在z大又更新了新的补丁,针对最新版本,这边笔者亲测可行,仅以下文记录本人 IntelliJ IDEA 2022.2.2 版本的激活破解到 2099 年的全过程,步骤非常详细,跟着图文来就行~
63327 3
IntelliJ IDEA2022破解IDEA2022.2永久破解激活教程
|
自然语言处理 IDE 测试技术
阿里云 的 通义灵码 在 IDEA 使用
【7月更文挑战第1天】在IntelliJ IDEA中启用阿里云的通义灵码插件,需安装插件,搜索“tongyi”安装并登录阿里云账号。插件提供行级/函数级代码建议、自然语言生成代码、单元测试生成、代码注释和解释等功能。支持多种编程语言,但需联网使用并依赖阿里云账号。快捷键在macOS和Windows上有差异,如macOS的“Tab”键接受代码建议,“Esc”废弃。
2341 0