使用Java代码发送携带附件的邮件的示例详解

 更新时间:2025年08月31日 15:23:32   作者:何中应  
本文介绍如何使用Hutool库的MailUtil组件实现邮件发送功能,包括设置邮件服务器、账号认证、邮件内容及附件等步骤,需要的朋友可以参考下

说明:本文介绍如何发使用代码送携带附件的邮件。

代码

发送代码如下:

import cn.hutool.core.io.FileUtil;
import cn.hutool.extra.mail.MailAccount;

import java.io.File;

public class EmailSentTest {
    public static void main(String[] args) {
        // 邮件接收人,多个接收人使用逗号或者分号隔开
        String to = "接收人邮箱";
        // 邮件主题
        String subject = "测试邮件";
        // 邮件内容
        String content = "这是一封测试邮件";
        // 附件
        File file = FileUtil.file("test.txt");
        // 获取邮箱客户端
        MailAccount account = EmailSendUtil.getMailClient("smtp.qq.com", 465,
                "发件人邮箱", "QQ邮箱授权码");
        // 发送邮件
        EmailSendUtil.sendEmail(account, to, subject, content, false, file);
    }
}

test.txt 文件,在项目 resources 目录里,内容如下:

工具类如下:

import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.mail.MailAccount;
import cn.hutool.extra.mail.MailUtil;

import java.io.File;

/**
 * 邮件发送工具类
 */
public final class EmailSendUtil {

    private EmailSendUtil() {
    }

    /**
     * 获取邮箱客户端
     *
     * @param smtpHost      smtp服务器地址
     * @param smtpPort      smtp服务器端口
     * @param emailUsername 邮箱用户名
     * @param emailPassword 邮箱授权码
     * @return
     */
    public static MailAccount getMailClient(String smtpHost, int smtpPort, String emailUsername, String emailPassword) {
        MailAccount account = new MailAccount();
        account.setHost(smtpHost);
        account.setPort(smtpPort);
        account.setAuth(true);
        account.setFrom(emailUsername);
        account.setUser(emailUsername);
        account.setPass(emailPassword);
        account.setSslEnable(true);
        return account;
    }

    /**
     * 发送邮件
     *
     * @param account 邮箱客户端
     * @param to      接收人邮箱地址
     * @param subject 邮件主题
     * @param content 邮件内容
     * @param isHtml  是否是html格式
     * @param file    附件
     */
    public static void sendEmail(MailAccount account, String to, String subject, String content, boolean isHtml, File file) {
        if (StrUtil.isBlank(to)) {
            throw new IllegalArgumentException("收件人邮箱地址不能为空");
        }
        if (StrUtil.isBlank(subject)) {
            throw new IllegalArgumentException("邮件主题不能为空");
        }
        if (StrUtil.isBlank(content)) {
            throw new IllegalArgumentException("邮件内容不能为空");
        }
        try {
            MailUtil.send(account, to, subject, content, isHtml, file);
            System.out.println("邮件发送成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("邮件发送失败");
        }
    }
}

发送成功

邮箱收到邮件

错误

可能遇到下面这个错误,提示需要使用 SSL 方式发送邮件

在创建邮件对象时,需开启,如下:

到此这篇关于使用Java代码发送携带附件的邮件的示例详解的文章就介绍到这了,更多相关Java发送携带附件的邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • idea不使用maven如何将项目打包

    idea不使用maven如何将项目打包

    使用IDEA 2021版本,不借助Maven进行打WAR包的步骤是:首先点击Project Structure,然后点击Artifacts,接着选择需要的打包类型,设置好包的名称,最后进行打包,这种方法适用于不使用Maven进行项目管理的情况
    2024-09-09
  • 新版idea创建spring boot项目的详细教程

    新版idea创建spring boot项目的详细教程

    这篇文章给大家介绍了新版idea创建spring boot项目的详细教程,本教程对新手小白友好,若根据教程创建出现问题导致失败可下载我提供的源码,在文章最后,本教程较新,文中通过图文给大家介绍的非常详细,感兴趣的朋友可以参考下
    2024-01-01
  • Java可重入锁ReentrantLock详解

    Java可重入锁ReentrantLock详解

    这篇文章主要介绍了Java可重入锁ReentrantLock详解,ReentrantLock是一个可重入且独占式的锁,是一种递归无阻塞的同步机制,它支持重复进入锁,即该锁能够支持一个线程对资源的重复加锁,除此之外,该锁的还支持获取锁时的公平和非公平性选择,需要的朋友可以参考下
    2023-09-09
  • 2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    2020最新IDEA SpringBoot整合Dubbo的实现(zookeeper版)

    这篇文章主要介绍了2020最新IDEA SpringBoot整合Dubbo(zookeeper版),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring 实现excel及pdf导出表格示例

    Spring 实现excel及pdf导出表格示例

    本篇文章主要介绍了Spring 实现excel及pdf导出表格示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Nacos配置内容加密实现过程

    Nacos配置内容加密实现过程

    文章介绍了在Nacos配置中实现加密的步骤,包括引入AES加密插件、重新编译Nacos服务端、修改SpringBoot应用配置前缀,并确保加密后内容在数据库存储而应用端能解密读取
    2025-08-08
  • SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码

    SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码

    这篇文章主要介绍了SpringBoot+Mybatis-Plus实现mysql读写分离方案的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Java:详解Java中的异常

    Java:详解Java中的异常

    这篇文章主要介绍了java中的异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-08-08
  • spring的pointcut正则表达式的实现

    spring的pointcut正则表达式的实现

    本文主要介绍了spring的pointcut正则表达式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • 基于spring boot排除扫描类的三种方式小结

    基于spring boot排除扫描类的三种方式小结

    这篇文章主要介绍了spring boot排除扫描类的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论