1、背景
为了方便获取和发送邮件,需要有一个定时服务来对人员列表的邮件内容进行收取,以及发送存储在数据库列表里面的邮件信息,并提供相应的界面管理功能,为企业员工提供相应的邮件服务。
本软件具有下面几个特点:
1)通过Windows服务驻留在服务器系统中,提供更及时、更高效的响应服务。
2)通过SMTP协议发送邮件和POP3协议获取邮件,支持大多数邮箱的邮件收发操作。
3)邮件收取和发送采用多线程进行处理,更好利用服务器资源。
4)邮件的附件通过接口获取并存储到服务器上,方便查看和管理。
5)提供对邮件内容、邮件配置和发送操作等方面,进行可视化的管理操作。
6)用户可以对自己的邮件进行删除,系统在服务进程进行后台处理,并执行删除操作。
本软件基于微软.NET 4.0框架技术,以C# 4.0为开发语言进行系统开发,数据库存储采用SqlServer/Sqlite/Oracle等关系型数据库进行存储。
2、软件配置安装说明
2.1数据库恢复操作
默认程序包里面有一个EmailPorter.bak文件,这个是SqlServer2005的备份文件,使用前需要把该数据库进行恢复才能使用本程序。
恢复数据库操作步骤,可以遵循下面几个步骤进行。
1)在数据库节点上右键执行还原数据库操作。
2)数据库还原操作。输入还原的数据库名称,在源设备中选择相应的备份文件,并勾选备件文件列表,然后执行还原数据库操作。
3)查看还原数据库表。数据库还原提示成功后,可以在新建的数据库里面,看到下面一些数据库表信息。
2.2 软件参数配置
软件目录下有两个.config文件,这两个文件是安装运行服务需要的配置信息,使用前,需要进行一定的配置,两个文件内容完全一致,需要统一修改。
其中的配置文件如下所示,注意其中红色标注的部分,修改相应的数据库访问地址(connectionString),以及发送的邮件附件基础路径(SendAttachPath)的配置值。
2.3 软件服务安装管理
该邮件代收代发系统,通过寄宿在Windows服务上,可以更好利用Windows的资源,软件提供一个基于Winform的程序主界面进行服务的安装、卸载、系统配置信息管理等相关的管理工作。运行定时服务控制台程序WinServiceTool.exe,程序图标如下所示。
定时服务控制台界面如下所示:
单击【安装服务】功能按钮,程序弹出DOS窗口进行服务安装。
安装后,系统的Windows服务列表中就会增加一个【定时服务】的服务模块了,这样就证明我们顺利安装了通用定时服务了。
服务程序安装后,定时服务控制台的界面状态有所变化,更新了定时服务的现有状态,如下所示。
2.4 性能优化配置
系统通过多线程技术,充分利用服务器资源,来提升服务器执行效率和缩短处理时间。
由于系统在发送和收取过程中,都需要占用系统相关的资源,因此将发送和收取两个模块分开,每个模块都以多线程方式进行数据处理。
为避免对发送列表频繁的轮训操作,设定最小的一个时间间隔数值,轮训频率不能小于这个时间间隔(最小为5秒)。
定时服务程序通过插件化管理各个模块,包括邮件发送、邮件接收、邮件删除操作,这几个服务插件的相关配置参考PlugInSetting.xml进行调整即可。
默认发送服务轮训为5秒间隔,邮件接收服务轮训为30秒间隔,邮件删除服务轮训为60秒间隔,可根据需要进行调整。
PlugInSetting.xml文件如下所示。
2.5 关于系统操作日志
与服务有关的一些操作记录,建议写回日志文件中,包括邮件的收取与发送日志,服务程序异常日志,以便于日后维护。
日志建议按yyyymmdd.txt 命名方式。
3、系统界面操作
为了实现以上的邮件收发和删除的服务操作,我们需要涉及下面几个业务场景,内容如下:
1) 邮件账号的配置
2)待发送的邮件存储,发送后邮件存储到发送历史里面。
3)指定接收账号的配置信息
4)接收的邮件存储
5)发送和接收的邮件的附件存储
由于邮件代收代发模块的【定时发送服务】,一般情况下是运行在服务器上,因此也要求软件的相关信息也存储在服务器上。基于这个原因,软件管理的数据应该存储在服务器上,Winform程序可以通过WCF的分布式数据访问获取服务器的数据(可以利用我的《WCF开发框架》、《混合式Winform开发框》架构造应用)。
本文的软件操作,是基于《混合式Winform开发框架》的界面操作方式,对邮件的账号进行配置,创建邮件内容,以及创建邮件发送列表等操作。
下面分别对这几个模块的界面进行一个大致的介绍。
3.1 邮件账号的配置
要发送和接收用户的邮件内容,首先需要配置相关的用户账号,用户账号的配置信息,以列表方式进行展示,如果需要添加新的账号,在界面上单击【新建】即可创建新的账号,如下界面所示。
在软件界面上填入相关的账号信息,然后单击【测试登陆】,系统会根据SMTP接口对账号进行测试,在使用账号的时候,只有【测试登陆】通过的账号,才能正常获取邮件和发送邮件。
如果对配置的邮箱不太清楚,系统提供了一个账号信息的对照表,方便查阅,在新建账号界面的下方有一个【常见配置信息】的功能,单击后弹出一个界面,介绍相关的邮箱账号配置信息,如下所示。
3.2 待发送的邮件存储
待发送的邮件存储在一个表里面,后台【定时服务】会根据这个表的数据进行循环发送,随着【定时服务】对列表的邮件进行不断的处理,待发送的邮件列表可能越来越少,最后可能剩下空白的列表记录。邮件发送列表界面如下所示。
待发送的邮件,一般来说每封邮件内容可以不同,也可以设计为批量发送,邮件引用不同的内容即可,看具体的需要。
如果用于营销推广方面,邮件的内容可能很多相同,如果每次发送都存储一样的邮件正文,则需要很大的存储空间,我们可以设计为只存储邮件明细的ID,把邮件标题和内容抽离进行独立维护。
单击【新建】功能,弹出一个界面用来新建一个发送的邮件。
上图红色区域为邮件的内容编写区域,里面可以通过图文的方式创建一个丰富多彩的邮件内容,邮件的图片采用网络地址方式进行插入,这样使邮件的接收人能够顺利打开相关的图片进行阅读。
准备好邮件内容后,我们接着在【邮件发送列表】界面中,通过【新建】操作,创建一个待发送的邮件,弹出下面的操作界面。
开始的时候,软件标题,软件接收者名单,都是空白的,需要我们根据需要填入相关的信息,这里的邮件正文,是通过按钮
进行引用刚才创建的邮件正文,以达到重用的目的。软件弹出选择邮件的界面如下所示,选择合适的邮件,然后在下方【选择】确认即可返回。
返回的界面上输入相关的接受者名单,如下所示。
发送方式有两种,一种是采用默认账号的方式发送,且邮件的多个接收者会出现在邮件的发送人中;一种是使用配置的所有账号轮流发送,这种方式,充分利用邮件账号的资源,把接收者分拆成多封邮件进行发送。
最后邮件待发送列表里面出现两封邮件(轮流发送方式,对邮件接收者进行拆分发送)。
如果【定时服务】在后台运行,那么很快就可以看到邮件的发送操作了,同时我本地的QQ已经有收到邮件的提示窗口了。
打开QQ邮箱,我们可以看到刚才发送的邮件内容。
打开接收者的163邮箱,可以看到另外一封邮件也顺利收到了,界面如下所示。
这个时候刷新待发送的邮件列表,我们可以看到,邮件列表已经清空了。另外发送成功的邮件已经移到历史列表里面去了。
3.3 指定接收账号的配置信息
如果用户已经配置了接收的账号,那么邮件会通过【定时服务】进行定时的获取,并把数据存储在邮件接收表里面。
开始的时候,这个列表是空的,界面左边是列出相关的邮件账号。如果我们需要进行邮件的收取,我们需要通过【配置收取账号】的界面进行处理,单击【配置收取账号】按钮,弹出以下界面,选择需要收取邮件,并确定保存即可。
3.4 接收的邮件存储
上面小节介绍了邮件收取账号的配置,当配置好账号后,返回主界面,等待一会功夫,刷新收取的邮件列表,即可看到已经很多邮件被收取下来存储到服务器上来,我们通过界面查看即可。
收取到的邮件,通过双击列表可以打开进行查看,我们打开其中一封邮件,看到的界面如下所示。
3.5 邮件的附件存储
邮件的附件是存放在服务器上的,如果需要获取,需要程序通过WCF服务的方式对附件进行远程获取查看。
对于一些邮件带有附件的,软件提供了相关的界面进行查看,操作界面如下所示。
软件如果是图片,可以双击进行查看,如果是其他文件,下载到本地进行打开。