业务咨询热线:

020-82038459

产品售后服务专线:

020-82038459

在线咨询:

软件开发
基于MailerDee邮件组件为某企业实现OA内外邮件同步系统设计方案

一、OA内外邮件整合的必要性

在信息时代的今天,企业信息化对我司的管理与经营,发挥着越来越重要的作用。OA系统就是公司内部管理与沟通的重要系统之一,而日常我司很多重要的通知和消息,除了以发文的方式进行传达以外,很多情况下还会通过OA的内部邮件系统进行传递。

然而,当前的OA内部邮件系统存在着如下不足:

1、内部邮件只能在公司内部的OA系统中传递,无法将内部邮件内容作为标准的国际电子邮件进行发送和传递。

2、当我们在外部电子邮件接收到新邮件时,也无法把相应的外部邮件的内容,通过OA的内部邮件系统进行查阅。

3OA的内部邮件系统,默认只能编写简单的纯文本内容,如果需要发送带有排版格式的邮件内容时,则需要额外的打开“HTML编辑器”。

 

从上面的“当前OA内部邮件发送与接收运作流程图”可以看出,当前我司的OA内部邮件系统,是简单的基于数据库的内容传递模式,整个内部邮件的传递过程,与外部的电子邮件无法产生任何联系。

正因为OA内部邮件系统的不足,无法与外部电子邮件进行同步,因此造成了公司很多重要的信息与通知,无法及时传达到各个部门的同事手上,导致公司内部信息沟通在一定程度与范围内的延迟,从而对我司的管理与经营造成了一定的阻力。

实现OA内外邮件同步收发,一方面,不单可以拓展部门之间的沟通渠道,对我司的管理经营具有促进作用;另一方面,可以更进一步的实现资源共享,在公司即将开展的电子商务建设进程中,占有举足轻重的地位。

 

二、OA内外邮件同步系统设计蓝图

在去年的《OA内外邮件整合可行性分析》中可以看出,OA内部邮件与外部邮件,是两种机制完全不一样的独立系统,因此,实现内外邮件整合,关键是需要在此两种独立的系统之间建立一个收发通道(编码 — 发送; 接收 — 解码),从而实现两种系统的收发同步。

 

2.1、系统运作流程图

 

 

 


2.2、邮件同步系统运作步骤说明

2.2.1、邮件接收列表

当用户登录OA系统进入内部邮件栏目后,则可以在查阅内部邮件的同时,也可以同时看到相应最新的外部邮件信息。

 

2.2.2、外部邮件阅读

外部邮件阅读,与当前的内部邮件阅读模式一样,直接点击OA内部邮件列表中的邮件主题,则进入邮件阅读页面。邮件阅读页面可以显示邮件发送者,发送时间,邮件主题以及附件文件列表。

 

2.2.3、附件下载

如果外部邮件含有附件文件,则在邮件正文内容的下方列举所有的附件名称。点击相应的附件文件,则可以将该附件下载到本地计算机中。

2.2.4、邮件发送

邮件发送页面,在支持发送现有的内部邮件外,还需要扩展支持直接发送外部邮件;邮件的正文编辑器,由当前默认的纯文本编辑框,升级为支持图文编辑,可带格式的内容编辑器。

外部邮件地址支持三种方式:常规接收邮件地址、抄送地址、暗送地址。

 

2.2.5、外部邮件通讯录

为了方便记录日常使用的外部邮件地址,在OA内部邮件系统中的“写新邮件”模块中,增加一个外部邮件通讯录,用户可以将常用的外部邮件地址保存在通讯录中,在发送邮件的时候,可以方便的选择调用。

 

2.2.6、外部邮件账号设置模块

OA用户可自定义一个常用的外部电子邮件地址,作为实现OA内外邮件同步的外部邮件地址。通过外部邮件账号设置模块,用户可设置:

   ·外部邮件地址

   ·外部邮件服务器

   ·外部邮件用户账号

   ·外部邮件登录密码

   ·接收邮件时是否在服务器上保存副本选项

 

三、OA内外邮件同步系统技术实现方案

3.1、外部邮件的工作原理

公司外部的电子邮件服务,是符合RFCRequest for Comments)的标准国际互联网电子邮件服务,它的工作过程遵循客户-服务器模式。

每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件,通过ESMTPRFC 821  &  RFC 822)协议,传递至发送服务器进行发送。

然后,邮件发送服务器识别接收者的地址,并向该地址的邮件接收服务器传递邮件数据。邮件接收服务器将邮件数据存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户程序连接到邮件接收服务器,通过POP3RFC 2449)协议,进而打开自己的电子信箱来查收邮件。

电子邮件在发送与接收过程中都要遵循SMTPPOP3等协议,这些协议确保了电子邮件在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收Internet上的电子邮件。

电子邮件在发送的时候,需要对待发送的邮件内容与附件文件,进行编码处理;而邮件接收方,必须要对接收到的邮件数据进行解码处理。

为什么要进行邮件编码与解码?在Internet里,电子邮件的传送是只能传送US-ASCII格式的文字信息,ASCII7位的,而非ASCII格式的档案,在传送过程中若不先经过编码,先编成7位再传送,则在传送过程中会因为这7位元的限制而遭到拆解,拆解之后只会让收信方看到一堆乱七八糟不知所云的东西。经过编码后的资料,在传送过程中才可顺利传送,不会有“被截掉一个bit”的危险,但是收信方必须具有解码程序,将这份经过编码的东西还原,才能解读“天书”,看到寄信人要传送的真实信息。

 

3.2、邮件编码规则

电子邮件在传输的过程中,并不是使用原文进行的,而是对邮件的正文(原文)以及邮件的附件文件进行编码后,再进行传递。而这种专门为邮件传递的编码/解码协议,叫做MIME协议。

MIME的英文全称是“Multipurpose Internet Mail Extensions”,即:多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议。通过MIME协议,邮件的正文内容以及附件文件,可以封装成一个邮件包,从而再通过相应的邮件传输协议进行传递。

而每一封经过MIME协议编码的邮件包,均由“邮件头”与“邮件主体”两部分组成,如下图:

经过MIME编码的邮件内容

3.2.1、邮件头

上图所示,其中粗体字部分,则属于邮件头区域。邮件头区域主要是包含如下信息:

·Message-ID:               邮件标识

   ·From:                     邮件发送方

   ·To:                       邮件接收方

   ·Subject:                  经过编码的邮件主题

   ·Date:                     邮件发送时间(互联网格式)

   ·MIME-Version:             MIME编码版本

   ·Content-Type:             邮件主体内容类型

   ·Content-Transfer-Encoding:   邮件主体传输编码方式

   ·X-Priority:               邮件优先级

3.2.2、邮件主体

上图所示,邮件主体为下面那段经过编码的文本,其中从邮件头的“Content-Transfer-Encoding: base64可以看出,主体内容的编码方式是 BASE64

3.2.3、邮件主体编码方式

邮件主体主要包括邮件的正文内容(HTMLTEXT模式),以及附件文件内容两大部分。无论是正文内容还是附件文件(可能存在一个附件以上),都是需要经过MIME协议的编码模式,封装成一个邮件主体。而作为MIME协议中,目前最为流行的邮件主体编码方式有两种:BASE64编码与 Quoted-Printable 编码。

当一封邮件同时存在文本内容、多个附件文件的时候,则邮件的MIME 编码格式,则会以多个“boundary(分割线)”进行区分。

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在MIME格式的电子邮件中,base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定base64。使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。完整的base64定义可见 RFC1421 RFC2045

Quoted-Printable编码适用于内容多为US-ASCII字符集中可打印字符的情况。经过它编码的数据不再需要邮件传输系统进行转换。如果被编码的数据多为US-ASCII字符,则编码后的内容会保留那些可人为识别的部分。完全由US-ASCII字符构成的内容也可以进行Quoted-Printable编码,以确保可以通过字符转换及(或)行封装的网关来传递所有的消息数据。可以通过查阅RFC2045RFC2049协议组,获取MIME中有关Quoted-Printable编码的详细规范。

3.3、个人外部邮件账号关联设置

每一个OA用户,均能自定义绑定一个常用的外部邮件地址,然后OA内外邮件同步系统根据用户提供的外部邮件信息(账号、密码、邮件服务器地址等信息),登录到远程的邮件服务器,进行外部邮件收发。而每个OA用户所提供的外部邮件信息,提供让OA用户自行定义和输入,其中关键项目包括:

   1、外部邮件地址

2、邮件登录密码

3、发信(SMTP)服务器

4、收信(POP3)服务器

5、是否在服务器保留副本

3.4、邮件接收同步系统

OA用户自定义设置一个常用的电子邮件地址,邮件接收同步系统将会根据此OA用户所对应的邮件接收账号与邮件接收服务器信息,通过POP3邮件接收协议,向指定的邮件服务器收取邮件数据(经过MIME编码的邮件数据),保存到我司内部的数据库中,并且根据邮件解码程序将收取到的邮件源数据进行解码,得出邮件的正文内容以及附件文件数据,最后,由邮件接收代理系统,发送到OA系统的数据库中,那么用户在登录OA系统进入内部邮件栏目后,便能查看最新的外部邮件信息。

3.4.1、外部邮件接收

实现外部邮件接收,主要是通过遵循POP3协议来进行的。POP3 (Post Office Protocol 3) 即邮局协议的第 3 个版本,它规定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准, POP3 允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循 POP3 协议的接收邮件服务器,用来接收电子邮件的。

关于POP3的详细定义,可以查阅RFC1939RFC2449两个协议定义标准。

3.4.2、邮件解码

由本章第一节可以知道,邮件在传递过程中,都是经过MIME编码的,那么通过POP3协议下载到本地的邮件数据,也必然是经过MIME编码的,因此,需要将邮件真正的内容还原出来,就必须经过一个MIME解码处理程序。

邮件的编码格式与编码方式,可具体参考本章的“3.2、邮件编码规则”,从而编写相应的解码程序。

3.4.3、外部邮件数据发送至OA数据库

当下载下来的邮件数据经过解码处理后,会还原出邮件的正文内容以及相关附件文件,这时,邮件接收同步系统需要将这些已经还原出来的外部邮件数据,添加到我司本部的OA数据库中,从而让OA用户在内部邮件系统中,能直接查阅。

3.5、邮件发送同步系统

OA用户在编写邮件页面上,可直接输入相应的内部邮件接收对象,以及外部邮件接收对象(请参考第二章的2.2.4小节),然后用户执行提交发送后,邮件正文内容以及附件文件内容,首先会根据用户输入的内部邮件接收对象,分别发送到OA的内部接收用户;然后,邮件的正文与附件,会交付给邮件发送同步系统进行MIME编码(具体编码方式,请参照本章3.2小节),获得标准的国际电子邮件格式,然后再根据当前OA用户所对应的邮件发送账号与邮件发送服务器信息,通过SMTP协议,向指定的邮件发送服务器递送转换后的电子邮件数据,最后,由指定的邮件发送服务器把电子邮件发送到目标的邮件接收服务器。

当公司员工登录到他们自己的外部邮件系统的时候,也就能看到由其指定的SMTP邮件发送服务器传递过来的,由OA内部邮件转换成标准格式的外部电子邮件信息。

3.5.1、邮件编码

在本章“3.1、外部邮件的工作原理”中可以知道,电子邮件在发送的时候,需要对待发送的邮件内容与附件文件,进行MIME编码处理,因此,实现将OA内部发送的邮件信息作为标准的国际电子邮件进行发送,必须要经过一个MIME编码处理程序。

邮件的编码格式与编码方式,可具体参考本章的“3.2、邮件编码规则”,从而编写相应的编码程序。

3.5.2、邮件发送

实现外部邮件发送,主要是通过遵循SMTP协议来进行的。SMTPSimple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

为了更有效地抑制垃圾邮件的泛滥,目前邮件服务器都把SMTP服务升级到ESMTP Extended SMTP: 扩展的SMTP服务)服务,它与SMTP服务的区别是,使用SMTP发信不需要验证用户帐号,而用ESMTP发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与SMTP方式没有两样。

这一步骤,可以通过开发相关的应用服务程序,封装ESMTP指令协议,与外部邮件服务器进行通讯,从而可以实现ESMTP身份认证和登录。

由用户设置的SMTP账号与密码,传送至SMTP登录处理应用程序,实现ESMTP的身份验证后,就可以进入相应的邮件发送过程,此过程也必须严格遵循SMTP电子邮件发送协议,把电子邮件数据从本地OA系统中的发送到外部的邮件发送服务器中。

通过开发相关的应用服务程序,首先进行登录外部邮件服务器,登录成功后,此应用服务程序通过ESMTP协议,从本地OA系统中,对内部邮件进行编码处理,然后再把编码后的标准电子邮件数据发送到指定的外部邮件发送服务器,从而实现本步骤的目标。
关于E/SMTP的详细定义,可以查阅RFC821RFC822RFC1425这三个协议定义标准。

3.6、邮件发送通讯录

外部邮件通讯录主要是为了存储用户常用的外部邮件地址而存在的,通讯录以数据记录的方式进行存储,用户可以对其进行如下操作:

   1、调用

   在编写新邮件时,可以直接调用出当前存在的外部邮件地址,然后将选择的邮件地址直接填写在“外部邮件接收对象”一栏内。

   2、添加

   用户可以添加新的电子邮件地址到通讯录里面。

   3、编辑

   用户可以对通讯录里现有的电子邮件进行修改和编辑。

   4、删除

   用户可以对通讯录里不再使用或过时的电子邮件进行删除操作。