AI驱动:90分钟Maven项目实战入门——邮件群发工具

📧 Java邮件群发工具开发实战:从零到一完整指南

📋 目录


🎯 表格教学目标

教学目标 详细说明
🎯 核心目标 让学生体验"在AI辅助下,从零创建Maven项目,引入一个第三方库,并跑通一个核心功能"的全流程
⏱️ 时间安排 90分钟极简版
🛠️ 技术栈 仅保留 Apache POI (xlsx)
📝 功能要求 1. 读取预设的Excel文件(可通过AI生成)
2. 解析第一行数据
3. 控制台打印姓名和邮箱
🚀 项目定位 邮件群发工具 - 读取Excel,打印联系人信息

📋 项目概述

邮件群发工具是一个基于Java的命令行应用程序,主要功能包括:

  • 读取Excel格式的联系人文件
  • 解析并显示联系人详细信息
  • 统计各部门人数分布
  • 支持动态添加新联系人
  • 为后续邮件发送功能提供数据支持

🛠️ 技术栈

  • Java 8+ - 核心编程语言
  • Apache POI 5.4.0 - Excel文件处理
  • Maven - 项目依赖管理
  • Git - 版本控制

🚀 90分钟快速开发流程

阶段一:项目搭建(15分钟)

1.1 创建Maven项目

# 在IDEA中创建新项目
New Project → Maven → JDK 8
GroupId: org.example
ArtifactId: EmailGroupSender
Version: 1.0-SNAPSHOT

1.2 极简pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>EmailGroupSender</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!-- 仅保留核心依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.4.0</version>
        </dependency>
    </dependencies>
</project>

阶段二:核心功能开发(50分钟)

2.1 创建联系人实体类(10分钟)

package com.example;

public class Contact {
    private String name;
    private String email;
    private String department;
    
    // 构造方法、getter/setter、toString
    public boolean isValid() {
        return name != null && !name.trim().isEmpty() &&
               email != null && !email.trim().isEmpty();
    }
}

2.2 生成示例Excel文件(10分钟)

// 让AI生成一个简单的Excel生成器
public class ExcelGenerator {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("联系人");
        
        // 创建表头
        Row header = sheet.createRow(0);
        header.createCell(0).setCellValue("姓名");
        header.createCell(1).setCellValue("邮箱");
        header.createCell(2).setCellValue("部门");
        
        // 创建示例数据
        String[][] data = {
            {"张三", "zhangsan@example.com", "技术部"},
            {"李四", "lisi@example.com", "市场部"}
        };
        
        // 保存文件到 data/contacts.xlsx
        // ... 完整代码
    }
}

2.3 核心功能:读取Excel并打印(30分钟)

package com.example;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

public class ExcelReader {
    public static void main(String[] args) {
        System.out.println("=== 邮件群发工具 - 核心功能演示 ===");
        
        try {
            // 1. 读取Excel文件
            List<Contact> contacts = readExcel("data/contacts.xlsx");
            
            // 2. 打印结果(满足极简要求)
            System.out.println("\n📋 联系人信息:");
            System.out.println("姓名\t\t邮箱");
            System.out.println("----------------------------");
            for (Contact contact : contacts) {
                System.out.println(contact.getName() + "\t\t" + contact.getEmail());
            }
            
            System.out.println("\n✅ 核心功能完成!共读取 " + contacts.size() + " 个联系人");
            
        } catch (Exception e) {
            System.err.println("❌ 错误: " + e.getMessage());
        }
    }
    
    public static List<Contact> readExcel(String filePath) throws Exception {
        List<Contact> contacts = new ArrayList<>();
        
        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = new XSSFWorkbook(fis)) {
            
            Sheet sheet = workbook.getSheetAt(0);
            
            // 跳过表头,从第二行开始
            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
                Row row = sheet.getRow(i);
                if (row != null) {
                    Contact contact = new Contact();
                    contact.setName(getCellValue(row.getCell(0)));
                    contact.setEmail(getCellValue(row.getCell(1)));
                    contact.setDepartment(getCellValue(row.getCell(2)));
                    
                    if (contact.isValid()) {
                        contacts.add(contact);
                    }
                }
            }
        }
        
        return contacts;
    }
    
    private static String getCellValue(Cell cell) {
        if (cell == null) return "";
        return cell.getStringCellValue();
    }
}

阶段三:测试与优化(25分钟)

3.1 运行测试(5分钟)

预期输出:
=== 邮件群发工具 - 核心功能演示 ===

📋 联系人信息:
姓名		邮箱
----------------------------
张三		zhangsan@example.com
李四		lisi@example.com

✅ 核心功能完成!共读取 2 个联系人

3.2 添加简单扩展(20分钟)

// 扩展1:添加新联系人
public class AddContact {
    public static void addContact(String name, String email, String department) {
        // 打开现有Excel,添加新行
    }
}

// 扩展2:统计信息
public class Statistics {
    public static void showStats(List<Contact> contacts) {
        System.out.println("\n📊 简单统计:");
        System.out.println("总人数: " + contacts.size());
        
        // 按部门统计
        Map<String, Integer> deptCount = new HashMap<>();
        for (Contact c : contacts) {
            String dept = c.getDepartment();
            deptCount.put(dept, deptCount.getOrDefault(dept, 0) + 1);
        }
        
        for (Map.Entry<String, Integer> entry : deptCount.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue() + "人");
        }
    }
}

🎯 90分钟学习目标达成清单

时间 学习目标 完成标志
0-15分钟 创建Maven项目并配置依赖 能成功编译项目
16-30分钟 理解Apache POI基本用法 能生成示例Excel文件
31-60分钟 实现核心读取功能 控制台正确打印联系人
61-75分钟 处理常见错误 能处理文件不存在等异常
76-90分钟 简单功能扩展 能添加统计或新增联系人功能

1.按照预期输出结构如下图:

629b8dc91cb0c410ffa35905e1a5a6cf

2.在excel表中添加新信息(上部分),更新后呈现(下部分),如下图中红笔勾画部分:

031150a10354145615ed6b2ed0523f38

🚨 常见问题快速解决

问题 症状 解决方案
依赖下载失败 IDEA报红,找不到类 1. 检查网络
2. 使用阿里云镜像
3. 手动下载jar包
Excel格式错误 读取时数据错位 1. 检查Excel列顺序
2. 使用代码重新生成
3. 验证文件编码
中文乱码 控制台显示乱码 1. 设置控制台编码为UTF-8
2. 检查文件保存编码

1.后缀xlsx文件应该用excel打开,而不是记事本(为乱码),如下图对比:

4edf5a78116e0d48a5fe4ab00a31d1d4

🌟 未来展望联系学期末课程设计

基于本次90分钟课堂实践的邮件群发工具基础版,可以在学期末课程设计中扩展为可视化邮件管理系统,重点在管理员后台用户前端两个维度进行突破与完善:

一、管理员后台:可视化监控与验证

1. 数据看板可视化

  • 实时监控面板:仪表盘展示发送成功率、打开率、点击率等核心指标
  • 联系人分布图:使用ECharts可视化展示各部门联系人分布
  • 发送趋势分析:折线图展示历史发送数据,支持时间筛选

2. 发送流程验证

  • 发送前校验系统:邮箱格式验证、内容安全检查、发送频率控制
  • A/B测试框架:支持不同模板/发送时间的对比测试
  • 沙箱测试环境:模拟发送流程,预览实际效果

3. 报表系统

  • 发送统计报表:Excel/PDF格式的详细发送报告
  • 联系人分析报告:活跃度分析、分组效果对比
  • 系统监控告警:异常情况自动通知,问题追踪日志

二、用户前端:可视化操作界面

1. 联系人管理界面

  • 可视化数据导入:拖拽上传Excel文件,实时预览导入数据
  • 联系人分组管理:树状结构展示分组,支持拖拽分组
  • 批量操作界面:可视化选择、筛选、批量发送

2. 邮件模板可视化编辑

  • 拖拽式编辑器:组件化邮件模板设计,所见即所得
  • 实时预览功能:编辑时同步预览不同设备显示效果
  • 模板库管理:分类存储常用模板,支持一键复用

3. 发送过程可视化

  • 进度条显示:实时显示发送进度和状态
  • 结果反馈界面:发送成功/失败的可视化提示
  • 历史记录查询:可视化查询和筛选发送记录

通过这样的课程设计扩展,未来将掌握:

  • 数据可视化技术:ECharts图表集成
  • 用户界面设计:JavaFX或Web前端开发
  • 系统验证方法:完整的测试和验证流程
  • 实际应用能力:从命令行工具到可视化系统的升级路径

从简单的控制台输出到完整的可视化管理系统,这一演进路径体现了现代软件开发的核心价值:让复杂的技术对用户透明,让数据变得直观可见

📝 项目总结

本次90分钟课堂实践不仅让我掌握了Maven项目管理、Apache POI操作等核心技术,有效合理的AI助学,以及idea中插件Lingma插件的辅助,更重要的是培养了"遇到需求→寻找工具→集成使用→解决问题"的工程思维。这为后续的深入学习和技术提升奠定了坚实基础。

从命令行工具到企业级系统的演进路径,展现了Java技术的强大扩展性和应用广度。希望同学们能够以本次实践为起点,在Java开发的道路上持续探索,不断突破。

学习之旅永无止境,每一次代码的编写都是向优秀开发者迈进的一步。

致未来的Java工程师:保持好奇,坚持实践,勇于挑战。今天的课堂小工具,可能就是明天改变世界的创新起点。


#Java入门 #项目实践 #Maven学习 #ApachePOI #编程入门 #技术成长

posted @ 2025-12-22 16:42  Jbuckle  阅读(1)  评论(0)    收藏  举报