JavaMail(三)需要哪些数据表支持
如果您仅仅是使用JavaMail的收发邮件功能,但是在项目中不需要页面去显示收发内容(比如我们常用的QQ邮箱中的发件箱、草稿箱、收件箱等),那么可以跳过此章节。
当然,我是已目前项目作为基础的,此章节中的数据表结构与设计仅仅是为了满足项目需要,存在很多不科学不合理的地方,仅仅是给您作为一个参考,欢迎指出问题和不足指出,我会非常感激您的帮助。
那么都需要准备什么数据表呢?
邮箱账号表(关键)- 用于存储用户绑定的邮箱账号信息
邮箱预设配置表(关键)- 用于用户绑定邮箱时,选择邮箱种类后,默认的邮箱配置项信息
邮件表(关键)- 用于存储用户绑定邮箱的邮件(发件、收件、草稿等)
邮件文件夹表(非关键)- 用于存储用户绑定邮箱中各个邮件的自定义文件夹
邮箱标签表(非关键)- 用于存储用户绑定邮箱中各个邮件的标签
首先说明一下,邮箱文件夹表 和 邮箱标签表 是非必须的数据表,仅仅是为了一定程度上让用户使用邮件管理更加方便而已。而且本项目中的邮件文件夹是虚拟存在的,只是用于检索邮件列表时的一个筛选条件,而不是物理上实际存在的文件夹。其实和标签是一样的道理。下面的邮件表中有相应的外键去记录它。
我们先看看邮箱账号表:
id 主键
user_email_account 邮箱账号
user_email_password 邮箱密码
user_email_send_host 发件邮件服务器
user_email_send_port 发件端口
user_email_receive_host 收件邮件服务器
user_email_receive_port 收件端口
user_email_protocol 协议类型(指收件服务)
ssl_state 是否开启ssl认证(0:不需要;1:需要)
binding_state 是否绑定(0:解绑;1:绑定)
belong_user_id 归属用户id
belong_company_id 归属公司id
省略系统字段。。。
说明:
1. 账号,密码,发收服务器端口不用过多解释。
2. ssl认证是什么鬼?
邮件服务器的安全问题最主要包含2个方面,一是如何防范垃圾和广告邮件及诈骗、钓鱼、勒索病毒邮件等问题,二是保
障邮件账号的安全以及邮件内容在传输过程中不被非法窃取和篡改。而后者是往往被很多IT运维人员所忽略的。
电子邮件服务器SSL安全证书确保客户端设备到邮件服务器端数据传输为加密方式。
除非获取SSL证书的私钥,否则目前第三方无法解密数据(不包括旧版本SHA1加密方式,因为其密钥太短)。
我们不需要关心这么多,整个加解密过程不用自己实现,开启这个选项后,在我们收发邮件时,填写上对应的参数即可,后面章节中会讲到。
3. 归属用户 和 归属公司 是预留字段,主要用于项目中的一些统计使用。
下面是邮箱预设配置表:
id 主键id(各邮件厂商基础配置信息)
email_type 邮箱厂商
send_host 发件服务器地址
send_port 发件端口号
receive_host 收件服务器地址
receive_port 收件服务器端口号
ssl_state 是否ssl加密(0:不需要;1:需要)(通常为0,可根据不同邮箱厂商要求进行配置)
省略系统字段。。。
说明:
这张表,我们没有过多需要解释的,如果勤快点,可以写个页面用于常规邮件厂商预设配置,如果嫌麻烦,这部分由运维直接数据库配置即可。需要我们自己去收集一些邮件厂商的配置信息。
下面是邮件表:
id 主键
sender 发件人
receiver 收件人
ccer 抄送人
secreter 密送人
subject 主题
main_time 用于展示的主要时间(草稿、发件箱为插入记录时间、收件箱为邮件服务器收件时间)
content 正文
attachment_state 是否包含附件(0:是;1:否)
type 邮件类型(0:草稿箱;1:发件箱;2:收件箱;3:垃圾箱;9:待发送)
fold_id 文件夹(文件夹外键)
sign_id 标签(标签外键)
read_state 是否已读(0:未读;1:已读)
active_flag 删除标识(0:未删除;1:已删除-是一个类似收件箱的文件夹,可查阅;-1:彻底删除-用户看不到,数据库不删除)
belong_account 邮件归属邮箱(通过该字段检索邮件草稿、发件、收件等属于哪个邮箱账户)
user_id 归属用户id
company_id 归属公司id
省略系统字段。。。
说明:
该表的字段名及备注基本见名知意,不做过多解释。这里的 active_flag中 -1 代表的彻底删除,不删除数据库,不是为了窃取用户数据 ^ -^ 而是因为,我们每次从收件服务器中获取邮件的时候,会和自己数据库中该邮箱账户的邮件做一些比对,已防止,同一封邮件重复出现,已彻底删除邮件又出现在收件箱等灵异事件。
文件夹表及标签表省略。。。(基本就是主键+文件夹或标签名称)
数据表部分已经讲完了,有了这些基础表,就可以开始开发咯,但是这些肯定是不足够的,不完备的。欢迎指正,我们一起成长。
- 未来哪些行业需要大数据技术的支持,目前主要应用于哪些行业
- 实现网络数据提取你需要哪些java知识
- 优秀的数据产品经理需要掌握哪些技能?
- 数据埋点最基本需要获取的用户数据有哪些?
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- 入行大数据,需要学习哪些基础知识?
- 数据挖掘人员工作领域分为哪几类,各自需要掌握哪些知识?
- 数据分析产品设计中,有哪些坑需要注意?
- 成为 BAT 疯抢的大数据人才,需要哪些努力?
- 完成了WF工作流持久化和对持久化介质数据的加载, 但是仅仅用持久化,不能够保存工作流当前的执行状态,需要跟踪服务支持,怎样使用Tracing 服务呢?
- 初学大数据需要了解哪些方面的知识?
- 电子商务数据运营入门——有哪些数据分析需要做 (转)
- 使用Matlab 画 ROC需要哪些数据
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- 大数据开发需要哪些工具?大数据开发必备工具汇总
- MySQL 中一个库中表数量是否有限制?表太多是否影响数据的性能?比如要把一张表拆成 1024 张,对于每个表的性能的影响是什么?这些影响需要考虑哪些因素?
- 移动产品经理需要跟踪app的哪些数据?
- 想学数据分析(人工智能)需要学哪些课程?
- 如果网页内容需要支持多语言,你会怎么做?在设计和开发多语言网站时,有哪些问题你必须要考虑?
- 想学数据分析(人工智能)需要学哪些课程?