Coder Social home page Coder Social logo

mail's Introduction

云信Mail
云信,更便捷的邮箱系统

云信Mail

Hi~ 这里是华南理工大学软件开发实训作品:邮件系统——云信邮件系统云信Mail提供了全面、便捷的功能和简洁、美观的用户界面,用户可以方便地查看邮件、发送邮件、管理邮件。云信Mail支持注册邮箱、接收邮件、发送邮件、标记已读/未读邮件、删除邮件、星标邮件、草稿箱、新邮件到达通知、搜索、过滤邮件等功能,用户可以在云信Mail上高效地处理邮件。更多内容请查阅项目Feature

技术栈

前端使用 Vue3 + vue-cli 框架和 element-plus 组件库 ,后端使用 Springboot 框架,数据库使用 MySQL 远程数据库和 mybaits , 云服务器和短信服务都使用 阿里云 的产品,AI服务使用 智谱清言 的接口。

贡献者(6)

后端代码贡献者(4)

前端代码贡献者(2+3)

项目Feature

  • 邮箱注册:云信Mail提供注册功能,用户可以用手机号注册邮箱,经过短信验证码验证,获得专属邮箱地址后缀 "@yunxin.com" 。服务器保存用户信息到数据库中,用于用户登录邮箱时验证。
  • 接收邮件:一旦用户登录了电子邮件账户,云信Mail基于HTTP协议,可以自动连接到邮件服务器并下载新邮件,一旦新邮件被下载,用户可以在收件箱中查看。
  • 发送邮件:通过HTTP协议与邮件服务器进行通信以发送邮件,用户需要在表单中提供收件人地址、抄送、主题、邮件内容、上传的附件(可选)。
  • AI支持:目前用户可以在阅读邮件的时候让AI自动总结邮件内容,方便用户快速了解邮件内容。
  • 标记已读/未读邮件:用户可以标记邮件为已读或未读,该状态会同步到服务器,在用户下次登录或者在其他设备登录时保持一致。
  • 删除邮件:用户可以选中批量删除邮件,将邮件移动到垃圾箱,可以进一步删除垃圾箱中的邮件,邮件会被永久删除。
  • 星标邮件:用户可以将重要的邮件标记为星标邮件,方便查找。
  • 草稿箱:用户可以保存未发送的邮件到草稿箱,下次登录时可以继续编辑。同样是存储在了后端,保证用户在不同设备上登录时草稿箱内容一致。
  • 新邮件到达通知:当用户收到新邮件时,云信Mail会弹出通知,提醒用户查看新邮件,并更新邮件列表。
  • 支持搜索、过滤邮件:用户可以通过关键字搜索邮件,也可以通过发件人、收件人、主题、时间等条件过滤邮件。
  • 客户端和服务端邮件同步:用户在不同设备上登录时,邮件状态、邮件内容、附件等信息都会同步到用户的设备上。
  • 用户友好的UI界面:云信Mail提供了简洁、美观的用户界面,用户可以方便地查看邮件、发送邮件、管理邮件。
  • 对RESTFUL接口响应的成功/错误弹窗:用户在操作时,会有相应的提示,方便用户了解操作结果,提升用户体验。例如成功或者失败(验证失败、操作不合法等)
  • 服务端使用数据库对邮件进行存储:邮件的元数据和正文,包括附件的元数据,都会存储在数据库中,保证数据的安全性和一致性。
  • 使用MIME发送附件,收件人能下载对应邮件中的附件
  • 客户端本地缓存:断网时,用户的操作会被缓存,网络恢复后会自动执行
  • 合理的报文约定:前后端交互的报文格式合理,包括请求报文和响应报文,保证数据的完整性和一致性
  • 服务端数据库设计合理:根据E-R图设计数据库,将数据放在多个表中,保证数据的一致性和完整性

项目设计

项目架构

层次 内容和功能
数据层(Data Layer) Mapper接口和映射文件
服务层(Service Layer) 服务接口和实现类
控制层(Controller Layer) Controller类
工具类和帮助类(Utility Classes) 工具类和帮助类
实体类(Entities) Java实体类
配置类(Configuration Classes) 配置类
数据传输对象(DTOs) 用于服务层与控制层的数据交换
视图对象(VOs) 用于封装展示给用户的数据
邮件模块(Mail Module) 邮件处理接口和实现
身份验证与权限控制(Authentication & Authorization) 安全配置
API 文档生成(API Documentation) Swagger
AI 服务(AI Service) AI服务接口和实现
其他(Miscellaneous) 过滤器、DTO、枚举等

设计原型图

原型图

后续可拓展功能

  • 邮件分类:用户可以将邮件分类,例如工作、学习、生活等,方便用户查找邮件。
  • 邮件标签:用户可以给邮件打标签,例如重要、紧急、待办等,方便用户查找邮件。
  • 邮件过滤规则:用户可以设置邮件过滤规则,例如将某个发件人的邮件自动归类到某个文件夹。
  • 邮件定时发送:用户可以设置邮件定时发送,例如设置明天早上8点发送邮件。
  • 邮件加密:用户可以对邮件进行加密,只有指定的接收者才能解密查看邮件。
  • 邮件签名:用户可以设置邮件签名,例如姓名、职务、公司等信息。
  • 邮件模板:用户可以设置邮件模板,例如常用的请假、报销、感谢等邮件模板。
  • 邮件统计:用户可以查看邮件统计数据,例如收发邮件数量、邮件时长、邮件分类等。
  • 邮件备份:用户可以备份邮件到本地或者云端,保证邮件数据的安全性。
  • 邮件回复:用户可以回复邮件,可以选择是否附带原邮件内容。

🚀 快速开始

安装项目依赖

在本地部署本项目,需要分别安装服务端和客户端的依赖,分别进入 backendfrontend 目录,使用 npm 或者 yarn 执行依赖自动安装命令:

项目前后端分离,在Mail仓库下的frontend是作为子模块存在,实际上指向的是Mail-frontend仓库。你也可以到 Mail-frontend 获取单独的前端代码。

cd Mail/[backend/frontend]
npm install

或者

cd Mail/[backend/frontend]
yarn install

启动云信Mail

在本地部署或者开发本项目,需要分别启动服务端和客户端,分别进入 backendfrontend 目录,执行启动命令:

cd Mail/[backend/frontend]
npm run serve

打包部署

cd Mail/[backend/frontend]
npm run build

将打包后的前端静态资源和后端文件部署到服务器上,推荐使用pm2启动后端服务。

功能接口

支持在线查看接口文档:在线接口文档

数据库设计

绘制并根据E-R图将数据放在多个表中 E-R图 服务器将邮件正文和附件进行分离存储(将邮件本体存储数据库中,附件存储在磁盘)

user

字段 类型 约束 说明
id integer primary key 用户id
username varchar(255) not null 用户名
password varchar(255) not null 密码
emailAddress varchar(255) not null 邮箱地址
telephone varchar(255) not null 电话号码
create_time datetime not null 创建时间
update_time datetime not null 更新时间

mail

字段 类型 约束 说明
id integer primary key 邮件id
sender_id integer not null 发送者id
receiver_id integer not null 接收者id
owner_id integer not null 邮件所有者id
theme varchar(255) not null 邮件主题
content text not null 邮件内容
send_time varchar(255) not null 发送时间
star integer not null 星标
readis integer not null 已读
draft integer not null 草稿
junk integer not null 是否废弃

attachment

字段 类型 约束 说明
id integer not null 邮件id
file_name varchar(255) not null 附件文件名
file_size bigint not null 文件大小
download——url varchar(255) not null 下载链接
create_time datetime not null 创建时间

mail's People

Contributors

val213 avatar smallcjy avatar yxyc-137 avatar wuyong065 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.