使用Java代码发送携带附件的邮件

21 阅读1分钟

说明:本文介绍如何发使用代码送携带附件的邮件,参考下面这篇文章:

代码

发送代码如下:

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 方式发送邮件

在这里插入图片描述

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

在这里插入图片描述

首次发布

hezhongying.blog.csdn.net/article/det…