`
cloudmail
  • 浏览: 271296 次
  • 来自: 广州
社区版块
存档分类
最新评论

邮件标签的实现方法

 
阅读更多

功能说明:

像QQ邮箱的标签功能,通过标签管理邮件,便于对邮件分类。一般有如下要求:

1) 增加、删除、修改标签

2) 对邮件标记多个标签,形成邮件和标签多对多的关系

3) 查看标签列表,并且可实时显示每个标签下的邮件数量

4) 查看某个标签下的邮件列表

5) 邮件列表可看到邮件已标记的标签

6) 可建收信规则,对于某种条件标记一个或多个标签

7) 删除标签时,不删除标签下的邮件

 

实现说明:

标签信息表:

label_id->label_detail_info(标签id为主键,映射标签详细信息,包括标签名等)

这个表可满足要求 1) 3),标签id递增生成,可满足 6)

 

邮件信息表:

user_id+message_id->messge_detail_info(用户和邮件id为主键,映射邮件详细信息,包括邮件所标记的标签label_id_list,发信时间等)

 

方法1:

1,label_id_list保存为字符串,如某封邮件标记有多个标签,则label_id_list为 '1,2,3',通过标签id获取标签名称,这样可满足要求 2) 5)

2,另外再建一个标签对应邮件的表,如label_id->message_id,通过message_id可以获取邮箱信息,可满足 4)

3,删除标签时,通过标签对应邮件的表找出邮件,修改邮件的label_id_list

 

优缺点:

1,可创建任意多个标签

2,需多维护”标签对应邮件的表“,对邮件标记标签时,修改label_id_list后需增加label_id->message_id的映射,保证原子操作较困难

3,删除标签后,需修改邮件的label_id_list

 

方法2:

1,label_id_list保存为long int,每个bit对应一个标签,如label_id_list=7表示为 '1,2,3',通过标签id获取标签名称,这样可满足要求 5)

2,其他和方法1一样

 

优缺点:

1,由于long int只有64个bit,所以最多只能建64个标签。其他和方法1一样,该方法限制了建标签的数量,所以用方法1也不用方法2。

 

方法3:

1,对邮件所标记的标签组合创建索引表,称为标签id映射表,该表有3列

label_map_id(int,递增,主键),user_id,label_id_list(varchar)

label_id_list是字符串类型,用逗号分隔的标签id,如'1,3,5',已经排好序的

对user_id创建索引,用于查找某用户使用的标签组合

由于该表的label_id_list只用于查询标签组合是否包含某标签id,并且单个用户使用的标签组合不会很多,所以不需要对user_id+label_id_list建索引

如 100->'1,2,3'

2,邮件信息表的label_id_list保存为label_map_id,如某封邮件标记的标签是'1,2,3',则邮件信息表的label_id_list的值为100

3,在邮件信息表对user_id+label_id_list创建索引

4,删除标签时,检查标签id映射表内的label_id_list删除将被删除的标签id

5,删除邮件时,检查是否还有邮件使用将被删除邮件的label_id_list,如果没有,则在标签id映射表删除相应记录。比如如果没有邮件再使用100,则将100删除

 

优缺点:

1,可创建任意多个标签

2,对邮件标记标签,取消标记标签,删除标签等操作都比较简单

3,需多维护”标签id映射表“,但修改标签的操作不频繁,并且修改该表不影响到原子操作,所以维护该表不麻烦


分享到:
评论

相关推荐

    电子邮件实现方法电子邮件实现方法电子邮件实现方法

    电子邮件实现方法主要涉及WebMail系统的设计与开发,这是一种将电子邮件服务与Web技术相结合的方式,使得用户无需通过专门的邮件客户端,而是直接通过浏览器就能完成邮件的收发、管理等操作。这种服务对于初学者和非...

    Java实现邮件客户端

    IMAP通常提供更高级的功能,如邮件分类、标签和搜索。 4. **MIME消息**:多用途互联网邮件扩展(MIME)标准定义了邮件的格式,包括文本、图片、音频等不同类型的附件。JavaMail API中的MimeMessage类用于创建符合...

    实现网页发邮件

    然而,通过结合表单(`<form>`标签)和HTTP的POST或GET方法,我们可以将用户填写的信息发送到服务器端,然后在服务器端使用编程语言(如PHP、Node.js或Python)来处理这些数据并实际发送邮件。这就是"HTML发邮件"的...

    用word2003批量打印邮件标签.pdf

    为了实现批量打印邮件标签,用户需要执行以下步骤: 1. 准备数据源。通常情况下,邮件地址和相关信息会被存储在Excel电子表格中,创建好一份包含所有需要打印的邮件地址和对应姓名的电子表格。 2. 在Word中打开一...

    用VB实现邮件接收程序

    7. **邮件获取**:编写FetchNewMail子例程,调用MAPIMessages1的FetchUnreadOnly=True设置只获取未读邮件,然后调用Fetch方法,将所有未读邮件加载到控件中。 8. **邮件显示**:编写DisplayMessage子例程,用于更新...

    基于朴素贝叶斯方法的垃圾邮件分类器

    本项目专注于使用朴素贝叶斯方法来实现一个垃圾邮件分类器,这是一个基础且实用的算法,对于初学者来说是一个很好的实践案例。朴素贝叶斯算法是基于概率论的一种分类方法,因其假设特征之间相互独立而得名“朴素”。...

    教案之用word2003批量打印邮件标签.pdf

    在Word 2003中批量打印邮件标签是一项实用的功能,尤其适用于处理大量信件的情况。这个过程涉及到Word的邮件合并功能,它允许用户将数据源(如Excel电子表格)中的信息合并到预设的文档模板中,实现个性化打印。以下...

    发送内嵌图片邮件的正确方法

    通过上述方法,我们可以轻松地在.NET环境中实现内嵌图片邮件的发送。相比于传统的图片发送方式,内嵌图片不仅提高了邮件的美观度,还保证了图片的稳定性和可靠性。这对于需要频繁发送包含图片内容的企业来说是一项...

    基于朴素贝叶斯的垃圾邮件分类(Matlab)

    3. **构建模型**:利用训练集(已知类别标签的邮件)计算每类邮件中每个特征出现的概率,以及每个类别先验概率。这包括计算每类邮件的总特征数、每类邮件中特定特征出现的次数,以及邮件总数。 4. **贝叶斯公式**:...

    javax.mail java 发送邮件的实现

    在本篇中,我们将深入探讨如何使用`javax.mail`来实现邮件的发送。 首先,要使用`javax.mail` API,我们需要引入相应的库。在Maven项目中,可以在pom.xml文件中添加以下依赖: ```xml <groupId>...

    java实现发送邮件功能

    本文将详细讲解如何使用Java实现发送邮件的功能,并基于给出的描述和标签,我们将深入探讨相关的JavaMail API及其使用方法。 首先,JavaMail API是Java平台上的一个开源库,它提供了一系列接口和类,用于处理邮件的...

    基于JSP的电子邮件系统设计与实现

    ### 基于JSP的电子邮件系统设计与实现 #### 概述 随着互联网技术的发展,电子邮件成为企业和个人之间通信的重要工具之一。基于此背景,本文档探讨了一种基于Java Server Pages (JSP) 技术实现的企业级电子邮件系统...

    内部简易邮件收发功能java实现

    标签“源码”意味着在提供的博文链接中,作者可能分享了具体的代码示例,帮助读者更好地理解和实现邮件收发功能。而“工具”可能是指除了JavaMail API之外,可能还会介绍一些辅助工具或库,比如Apache Commons Email...

    用PB实现的发生邮件程序源码

    标签“PB”、“邮件”、“源码”和“powerbuilder”进一步强调了这个程序的核心元素。PB(PowerBuilder)是编程工具,邮件表明程序涉及电子邮件功能,源码表示提供的是可读的代码,而不是编译后的二进制文件,而...

    日报小助手 C#程序 实现定时发送邮件

    【标题】:“日报小助手 C#程序 实现定时发送邮件” ...通过深入理解和使用此程序,不仅可以学习到C#编程基础,还能掌握邮件发送的实现方法以及如何利用.NET Framework进行定时任务的设置,对提升IT技能大有裨益。

    JAVA邮件处理方法

    本文将详细探讨"JAVA邮件处理方法",结合提供的标签和文档,我们将深入理解邮件发送的源码实现、使用的工具以及邮件协议的基础知识。 1. **JavaMail API**: JavaMail API是Java平台上的一个开源库,专门用于处理...

    socket实现简单邮件发送

    标题中的“socket实现简单邮件发送”指的是利用套接字(Socket)编程技术来发送电子邮件。在计算机网络中,Socket是应用程序通过编程接口与操作系统进行通信的桥梁,它允许程序发送和接收数据。在这个项目中,我们将...

    电子邮件分类数据集.zip

    标签是每个邮件的分类结果,它们通常以数字或字符串形式表示,例如"spam"代表垃圾邮件,"ham"代表非垃圾邮件。在本数据集中,可能的标签种类会根据实际应用场景而有所不同,可能是二分类(垃圾邮件与非垃圾邮件),...

Global site tag (gtag.js) - Google Analytics