發表一個自己C#寫的email 初級系統原始碼

來源:互聯網
上載者:User
原始碼 .NET TNT Email Server Tester說明



2004-11-9



一、引言

TNT Email Server Tester是一個支援多網域名稱的email 伺服器的測試版本。他實現了SMTP/POP3介面,基本上實現了一個小型的email伺服器。

本測試器版本包含原始碼,供大家參考。

通過大家測試,提出修改建議和意見,我會修改,並給提出寶貴意見者一套發行版SDK。



二、SDK

TNT Email Server Tester本身是一個小型的email伺服器,但是基本核心功能基於common.dll server.dll 。本測試版以及將來發行版都不會包含著兩個核心庫檔案的原始碼,但是會發布一套參考開發email server的原始碼,供大家學習使用SDK。

關於SDK的詳細資料,可能要等到我的發行版商業化了才會見到。

全部開發基於C#開發,我的.net framework 是v1.0.3705,不過相信在其他1.1版本的framework上應該也可以運行。如果出現一些異常情況,且你能夠及時聯絡我,我將非常感激。

要獲得一套完整的email伺服器,需要您準備確定以下資訊:

1、 email 的根目錄

2、 email 的pickup目錄,也就是本地投遞的撿取目錄。Server.dll包含了監視這個目錄並發送此目錄中eml檔案的服務線程。

3、 email 的queue目錄,也就是eml的排隊緩衝目錄。Server.dll包含了監視這個目錄並發送此目錄中eml檔案的服務線程。DispSvc會根據這個目錄的eml檔案資訊發送信件到墓地儲存目錄或者外發郵件目錄

4、 email 的 Drop 目錄,也就是確定是本地的郵件儲存目錄,會有系統服務線程從此目錄將eml檔案發送到特定的本機使用者郵箱。

5、 email 的outPost目錄,也就是需要發送到外部的郵件的儲存目錄

6、 確定mailBox目錄,也就是使用者郵箱的儲存地

7、 為本地區名建立信箱儲存區目錄。假設當前email server服務的網域名稱是abc.com,那麼需要在mailBox目錄上建立一個網域名稱目錄abc.com,然後再在此目錄下建立使用者目錄mailbox目錄和userinfo.ini檔案。假設使用者名稱info

就是….\mailbox\abc.com\info\mailbox\目錄



檔案……\mailbox\abc.com\info\userinfo.ini

userinfo.ini的格式為:

username=info

password=*********

FWDList=

Name=XXX

CreatTime=2003-1-1

Username= 一行表示儲存此使用者郵箱所屬使用者名稱,password行顯然就是使用者的密碼儲存。將來發行版本回考慮md5加密。其他的不重要,作為保留擴充需要。

8、 實際上,以上需要確定部分都在IserverInfo介面種定義。每一個伺服器都需要兩個介面才可以正常運轉。

public interface IServerInfo

{

/// <summary>

/// 擷取伺服器的各個目錄字元串,通過常量索引返回相關配置資訊

/// 通過SVR_DIR_XXXX訪問

/// </summary>

/// <returns>返回一個關於伺服器目錄的字串數組,訪問通過Common中的常量訪問</returns>

string[] ServerDirectorys();



/// <summary>

/// 獲得伺服器的各個網域名稱,索引0為預設網域名稱

/// 通過SVR_DOMAIN_XXXX訪問

/// </summary>

/// <returns>返回伺服器支援的全部網域名稱</returns>

string[] ServerDomains();



/// <summary>

/// 返回伺服器的關於網域名稱和MX解析的設定

/// 通過SVR_DNS_XXXX訪問

/// </summary>

/// <returns>返回DNS伺服器資訊IP</returns>

string[] ServerDNSSetting();



/// <summary>

/// 包括的資訊依次為:TCP逾時 。。。。。。

/// 通過常量訪問SVR_RT_PARA_XXXX訪問

/// </summary>

int[] ServerRunTimeParameters();



/// <summary>

/// 返回伺服器互動當中返回的資訊

/// 訪問通過SVR_REMSG_XXXX訪問

/// </summary>

string[] ServerReplyMessage();



/// <summary>

/// 返回伺服器端設定字串

/// 通過SVC_SETTING_XXXX訪問

/// </summary>

string[] ServerSetting();

}

以上介面很多返回數組,一般情況下,數組就是需要開發人員確定的。詳細參考例子。

9、 Ilog是一個記錄內部資訊的介面,協助調用者瞭解線程調用發生的情況資訊。

10、 測試環境:

.net framework 1.0以上

足夠的儲存空間和正確的確定目錄。





三、意見反饋

歡迎向以下email發送反饋資訊:

myjobsdk@yahoo.com.cn



壓縮檔及工程檔案在:
http://www.vchelp.net/ASP/cdf_pic/200410/subject_1_118575.zip




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.