大約半年前,一個客戶希望給他開發一個代收代發的功能模塊,只需要一個后台的服務進行自動收取和發送郵件,因此我結合了我自己的定時服務程序,增加了一個基於Lumisoft組件的郵件發送和收取插件模塊,整合了一個郵件的代收代發的自動化服務程序。做完這些程序的開發,也撰寫了好幾篇的技術隨筆文章,感覺也有一定的成就感。
基於Lumisoft的技術隨筆如下:
基於Lumisoft.NET組件開發碰到亂碼等一些問題的解決
基於Lumisoft.NET組件的POP3郵件接收和刪除操作
基於Lumisoft.NET組件和.NET API實現郵件發送功能的對比
基於定時服務的模塊開發技術隨筆
Winform開發框架之通用定時服務管理2---如何開發定時服務應用
一、郵件代收代發的服務模塊
言歸正傳,本篇隨筆主要介紹在我原來的代收代發的服務模塊基礎上增加相關的處理界面,首先先來了解這個應用的主要應用場景:在一些企業內部,可能有很多員工需要在一個應用平台上統一處理郵件的發送和接收工作,而不用為獲取某個賬號,到不同的郵件平台上進行郵件的處理。這樣做有幾個好處,一是使員工能夠集中、統一處理郵件的相關操作,二可以把相關的郵件數據留在我們的業務平台上,三是能夠管理多個賬號的郵件收發等等。
為了實現郵件的即使收發,我們必須實現數據的處理延時問題,如果處理的太慢,就不能達到較好的效果,如果處理的太快---那就最好不過了,但是會耗費過多的硬件資源。
因此我使用了基於WIndows服務的操作,企業的服務器那是相當可以的,處理瓶頸不存在問題,也盡可能把間隔的發送、接受操作設置的更加及時一些。
郵件代收代發的應用程序,具有下面幾個特點:
1)通過Windows服務駐留在服務器系統中,提供更及時、更高效的響應服務。
2)通過SMTP協議發送郵件和POP3協議獲取郵件,支持大多數郵箱的郵件收發操作。
3)郵件收取和發送采用多線程進行處理,更好利用服務器資源。

該郵件代收代發服務,通過寄宿在Windows服務上,可以更好利用Windows的資源,軟件提供一個基於Winform的程序主界面進行服務的安裝、卸載、系統配置信息管理等相關的管理工作。
定時服務的管理界面如下所示。

二、郵件代收代發的界面設計
為了實現以上的郵件收發和刪除的服務操作,我們需要設計幾個業務場景:
1)配置郵件賬號信息
2)待發送的郵件存儲,發送后郵件存儲到發送歷史里面。
3)指定接收賬號的配置信息
4)接收的郵件存儲
5)發送和接收的郵件的附件存儲
下面分別對這幾個模塊的界面進行一個大致的介紹。
1、配置郵件賬號信息

關於郵件賬號的SMTP賬號檢測實現,可以參考我上一篇隨筆《基於Lumisoft.NET組件的SMTP賬號登陸檢測》
對於多賬號,我們需要用一個列表進行展示,方便操作管理,列表界面如下所示。

2、待發送的郵件存儲
待發送的郵件,一般來說每封郵件內容可以不同,也可以設計為批量發送,郵件引用不同的內容即可,看具體的需要。
如果是前者,可以設計界面如下所示。

如果是用於營銷推廣方面,郵件的內容可能很多相同,如果每次發送都存儲一樣的郵件正文,則需要很大的存儲空間,我們可以設計為只存儲郵件明細的ID,把郵件標題和內容抽離進行獨立維護。

郵件內容獨立保存,在需要給多個客戶發送郵件的時候,則選擇郵件即可,郵件內容和發送郵件分離的界面如下所示。

上面兩種應用場景,分別是不同業務的代表。
另外,郵件的內容編輯,可以選用基於富文本的RichEdit控件,關於DevExpress里面的RichEdit控件的使用,可以參考我之前的隨筆文章:《DevExpress控件使用之RichEditControl的使用》
郵件內容編輯也可以選用一種開源的Zeta HTML Edit Control,一個基於Winform的HTML編輯控件,具體可以參考我前面的隨筆介紹:《 分享一個Winform里面的HTML編輯控件Zeta HTML Edit Control,漢化附源碼》
整個系統的界面場景還涉及到郵件發送界面設計、郵件接收賬號配置、郵件接收列表的展示等方面,由於篇幅原因,本文就不再介紹,如果園友對文章比較支持,將會在下一篇繼續介紹相關的界面設計思路及心得。
需要繼續了解的園友,也可以到我的官方網站(http://www.iqidi.com)上,下載客戶關系管理系統進行這方面的設計界面了解。
3、Winform開發框架介紹
Winform開發框架詳細了解可以訪問:http://www.iqidi.com/Framework/info.html


