java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java发送携带附件的邮件

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

作者:何中应

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

您可能感兴趣的文章:
阅读全文