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邮件功能
715 0
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
7344 1
|
缓存 JSON 安全
43 Swift中的一些第三方库
Swift中的一些第三方库
465 0
|
人工智能 自然语言处理 API
浅谈ModelScope
ModelScope是阿里推出的下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,其开发目标为让模型应用更简单。ModelScope希望在汇集行业领先的预训练模型,减少开发者的重复研发成本,提供更加绿色环保、开源开放的AI开发环境和模型服务,助力绿色“数字经济”事业的建设。ModelScope平台以开源的方式提供了多类优质模型,开发者可在平台上免费体验与下载使用。
|
10月前
|
人工智能
热门活动速递丨AI 原生应用开发实战营·杭州站
了解 AI 原生应用开发的前沿趋势和核心产品技术,全面 get 典型应用场景及硬核实战经验,快速上手一键部署 DeepSeek 系列模型,现场完成实操,颁发专属证书与精美礼品。
274 98
|
Ubuntu Linux 开发工具
Gitlab安装问题之Ubuntu 20.0.4 报错E: Unable to locate package gitlab-ee
Gitlab安装问题之Ubuntu 20.0.4 报错E: Unable to locate package gitlab-ee
1251 0
Gitlab安装问题之Ubuntu 20.0.4 报错E: Unable to locate package gitlab-ee
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
3145 1
|
11月前
|
XML 前端开发 Java
SpringBoot整合Flowable【04】- 通过代码控制流程流转
本文介绍了如何使用Flowable的Java API控制流程流转,基于前文构建的绩效流程模型。首先,通过Flowable-UI导出模型文件并部署到Spring Boot项目中。接着,详细讲解了如何通过代码部署、启动和审批流程,涉及`RepositoryService`、`RuntimeService`和`TaskService`等核心服务类的使用。最后,通过实际操作演示了流程从部署到完成的全过程,并简要说明了相关数据库表的变化。本文帮助读者初步掌握Flowable在实际业务中的应用,后续将深入探讨更多高级功能。
1600 0
SpringBoot整合Flowable【04】-  通过代码控制流程流转
|
NoSQL 算法 关系型数据库
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
本文详解分布式全局唯一ID及其5种实现方案,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
|
Java UED Spring
Springboot通过SSE实现实时消息返回
通过Spring Boot实现SSE,可以简单高效地将实时消息推送给客户端。虽然SSE有其限制,但对于许多实时消息推送场景而言,它提供了一种简洁而强大的解决方案。在实际开发中,根据具体需求选择合适的技术,可以提高系统的性能和用户体验。希望本文能帮助你深入理解Spring Boot中SSE的实现和应用。
5797 1

热门文章

最新文章