# dm_email_send_test **Repository Path**: gy297879328/dm_email_send_test ## Basic Information - **Project Name**: dm_email_send_test - **Description**: DEM邮件发送测试用例 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-11 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # dm_email_send_test 基于 Jakarta Mail 的 SMTP 发信示例项目,支持 HTML 正文与附件发送。 ## 目录结构 ```text dm_email_send_test/ ├─ src/main/java/MailUtil.java ├─ src/test/java/com/dameng/AppTest.java ├─ lib/ ├─ scripts/ ├─ docs/ └─ pom.xml ``` ## 环境要求 - JDK 8 及以上(建议 JDK 8+) - 可访问的 SMTP 服务 - 终端具备 `javac` 与 `java` 命令 ## 快速开始(推荐:本地 lib 直编直跑) 说明:当前项目源码位于 `src/main/java/MailUtil.java`,运行入口类名为 `MailUtil`(默认包)。 ### 方式一:按当前仓库结构运行(推荐) ### Linux ```bash mkdir -p out javac -encoding UTF-8 -cp "lib/*" -d out src/main/java/MailUtil.java java -cp "out:lib/*" MailUtil ``` ### Windows (PowerShell / CMD) ```bat if not exist out mkdir out javac -encoding UTF-8 -cp "lib/*" -d out src/main/java/MailUtil.java java -cp "out;lib/*" MailUtil ``` ### 方式二:单文件同级 lib(适合临时验证) 当你把 `MailUtil.java` 单独拿到一个目录,且该目录下同时有 `lib/` 时,可直接使用以下命令。 目录示例: ```text demo/ ├─ MailUtil.java └─ lib/ └─ *.jar ``` #### Linux ```bash javac -encoding UTF-8 -cp "lib/*" MailUtil.java java -cp ".:lib/*" MailUtil ``` #### Windows (PowerShell / CMD) ```bat javac -encoding UTF-8 -cp "lib/*" MailUtil.java java -cp ".;lib/*" MailUtil ``` ### 两种方式如何选择 - 方式一:适用于当前仓库,源码在 `src/main/java/MailUtil.java`。 - 方式二:适用于你临时拷贝单文件做快速验证的场景。 - 两种方式仅目录布局不同,依赖与邮件参数配置一致。 ## 参数配置说明(`MailUtil.main`) `MailUtil.main` 中调用示例: ```java sendMail("mail.xxx.dameng:25", "139xxxx@163.com", "139xxxx@163.com", "dameng123", new String[] { "gy@dameng.com" }, new String[] { "gy@dameng.com" }, "TEST", context, null, false, null); ``` 主要参数含义: - `smtpHost`:SMTP 地址,可写为 `host` 或 `host:port` - `fromMail`:发件人邮箱地址 - `fromAccount`:SMTP 认证账号(为空时默认使用 `fromMail`) - `fromPwd`:SMTP 认证密码/授权码 - `toMails`:收件人数组 - `ccMails`:抄送人数组 - `subject`:邮件主题 - `content`:邮件正文(HTML) - `attachFileMap`:附件映射(`File -> 附件显示名`) - `useSSL`:是否启用 SSL - `properties`:扩展 SMTP 属性(`key=value` 字符串数组) ## 常见问题排查 1. `package ... does not exist` - 原因:编译时未正确设置 `-cp "lib/*"`。 - 处理:确认在项目根目录执行,并确认 `lib/` 下依赖完整。 2. `Could not find or load main class MailUtil` - 原因:运行时 classpath 未包含编译输出目录。 - 处理:Linux 使用 `-cp "out:lib/*"`,Windows 使用 `-cp "out;lib/*"`。 3. SMTP 认证失败或连接失败 - 检查 SMTP 地址与端口是否正确; - 检查账号密码(或授权码)是否可用; - 检查是否需要 SSL/TLS 以及对应端口策略。 4. 方式二下仍提示缺少依赖 - 原因:`lib/` 不在 `MailUtil.java` 同级目录,或 `-cp "lib/*"` 路径不匹配。 - 处理:确认当前工作目录就是单文件目录,且 `lib` 与 `MailUtil.java` 同级。 ## 安全建议 - 不要在源码中硬编码真实邮箱密码或授权码。 - 建议改为环境变量或外部配置文件注入敏感信息。 ## 关于 Maven 与现状说明 - 当前 `pom.xml` 仅包含基础测试依赖,未完整声明 `MailUtil` 运行所需依赖。 - 本项目当前最稳妥的执行路径是本文档提供的 `lib/*` 直编直跑方式。 - `docs/MAILUTIL_LINUX_操作手册.md` 与 `scripts/run_mailutil_linux.sh` 现有内容假设 `MailUtil.java` 位于项目根目录;而当前实际源码路径为 `src/main/java/MailUtil.java`。使用本 README 命令可直接匹配当前仓库结构。