使用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发送携带附件的邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 数据结构与算法系列精讲之排序算法

    Java 数据结构与算法系列精讲之排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存
    2022-02-02
  • SpringBoot文件分片上传的示例代码

    SpringBoot文件分片上传的示例代码

    分片上传在很多地方都可以使用的到,本文主要介绍了SpringBoot文件分片上传的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • 工厂方法模式_动力节点Java学院整理

    工厂方法模式_动力节点Java学院整理

    这篇文章主要介绍了工厂方法模式_动力节点Java学院整理的相关资料,需要的朋友可以参考下
    2017-08-08
  •  Java数据结构的十大排序

     Java数据结构的十大排序

    这篇文章主要介绍了 Java数据结构的十大排序,排序算法分为比较类排序和非比较类排序,具体的内容,需要的朋友参考下面思维导图及文章介绍,希望对你有所帮助
    2022-01-01
  • Java实现Shazam声音识别算法的实例代码

    Java实现Shazam声音识别算法的实例代码

    Shazam算法采用傅里叶变换将时域信号转换为频域信号,并获得音频指纹,最后匹配指纹契合度来识别音频。这篇文章给大家介绍Java实现Shazam声音识别算法的实例代码,需要的朋友参考下吧
    2018-09-09
  • Spring Boot XSS 攻击过滤插件使用

    Spring Boot XSS 攻击过滤插件使用

    这篇文章主要介绍了Spring Boot XSS 攻击过滤插件使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • springboot 通过代码自动生成pid的方法

    springboot 通过代码自动生成pid的方法

    这篇文章主要介绍了springboot 通过代码自动生成pid的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • SpringBoot配置Apollo代码实例

    SpringBoot配置Apollo代码实例

    这篇文章主要介绍了SpringBoot配置Apollo代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java中EnumSet代替位域代码详解

    Java中EnumSet代替位域代码详解

    这篇文章主要介绍了Java中EnumSet代替位域代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java中的内存泄露问题和解决办法

    Java中的内存泄露问题和解决办法

    大家好,本篇文章主要讲的是Java中的内存泄露问题和解决办法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01

最新评论