使用 SMTP 發(fā)送電子郵件 Duwamish Online Aaron Ching Microsoft Developer Network 2000年12月 摘要:本文討論使用 Internet 信息服務(wù) (IIS) 提供的簡(jiǎn)單郵件傳輸協(xié)議 (SMTP) 服務(wù)發(fā)送電子郵件的優(yōu)點(diǎn)。文中同時(shí)講述了配置和測試 Duwamish Online 服務(wù)的情況。 簡(jiǎn)介 Duwamish Online 應用程序向客戶(hù)發(fā)送電子郵件,通知其訂單狀態(tài);向操作小組成員發(fā)送電子郵件,幫助他們監視應用程序的運行情況。該應用程序使用 Microsoft® Windows® 2000 中的 Internet 信息服務(wù) (IIS) 提供的簡(jiǎn)單郵件傳輸協(xié)議 (SMTP) 服務(wù)。其原因是 SMTP 能夠非常容易地處理應用程序消息傳遞需求,并保證在借助功能齊備的消息傳遞系統(如 Microsoft® Exchange Server)的情況下,既能使用我們的 Internet 服務(wù)提供商 (ISP)(即 Microsoft 信息技術(shù)組)提供的外部電子郵件服務(wù)器,也能使用我們自己的電子郵件服務(wù)器。 由于功能齊備的消息傳遞系統可為接收和待發(fā)電子郵件的處理提供一整套服務(wù),因此對于僅使用電子郵件系統處理待發(fā)郵件的站點(diǎn)來(lái)說(shuō),Windows 2000 中的 SMTP 服務(wù)是更具成本效益的解決方案(隨操作系統免費附送)。 我們將在本文中講述 DuwamishOnline.com 的 SMTP 服務(wù)配置和測試。不過(guò),將首先簡(jiǎn)要介紹一下 SMTP 的工作方式。 SMTP 的工作方式? 簡(jiǎn)單郵件傳輸協(xié)議是核心 Internet 協(xié)議 (IP) 之一,其設計主旨是可靠有效地傳輸電子郵件。 SMTP 的最初構想相對來(lái)說(shuō)比較簡(jiǎn)單。用戶(hù)或應用程序(此處為 Duwamish Online)撰寫(xiě)郵件,其中包含收件人電子郵件地址(例如 "johndoe@somecompany.com")、郵件主題及郵件內容。 傳遞郵件的第一步是將郵件傳送至指定的 SMTP 服務(wù)器。SMTP 服務(wù)器根據收件人電子郵件地址的域名(例如 "somecompany.com"),開(kāi)始與域名系統 (DNS) 服務(wù)器通信,DNS 服務(wù)器將查找并返回該域的目標 SMTP 服務(wù)器的主機名(例如 "mail.somecompany.com")。 最終,啟動(dòng)郵件傳遞的 SMTP 服務(wù)器將通過(guò)傳輸控制協(xié)議 / Internet 協(xié)議的端口 25 直接與目標 SMTP 服務(wù)器進(jìn)行通信。如果收件人電子郵件地址的用戶(hù)名與目標服務(wù)器中的一個(gè)授權用戶(hù)帳戶(hù)匹配,則原始電子郵件將最終傳送至該服務(wù)器,等待收件人通過(guò)客戶(hù)程序收取。 如果啟動(dòng)郵件傳遞的 SMTP 服務(wù)器無(wú)法與目標服務(wù)器直接通信,則 SMTP 協(xié)議能夠提供通過(guò)一個(gè)或多個(gè)中繼 SMTP 服務(wù)器傳送郵件的機制。中繼服務(wù)器將接收原始郵件,然后嘗試將其傳遞至目標服務(wù)器,或重定向至另一中繼服務(wù)器。此過(guò)程將一直重復,直到郵件傳遞至目標服務(wù)器,或超過(guò)指定的超時(shí)時(shí)間為止。 在 Windows 2000 中設置 SMTP 從 Microsoft Windows NT® 的以前版本開(kāi)始,SMTP 服務(wù)就一直作為 Internet 信息服務(wù)的一個(gè)組件。由于 SMTP 服務(wù)在 Duwamish Online 中主要用來(lái)處理容量相對較小的待發(fā)電子郵件(用于確認訂單),所以在業(yè)務(wù)初期不必專(zhuān)門(mén)用一臺計算機來(lái)實(shí)現此功能。最后,我們決定將 SMTP 服務(wù)放在訂單處理服務(wù)器上,該服務(wù)器已連接到外部的 Internet 網(wǎng)段。 下面是用來(lái)為 Duwamish Online Web 站點(diǎn)設置 SMTP 服務(wù)的步驟。 安裝 SMTP 服務(wù) 若要安裝 SMTP 服務(wù),請執行以下操作: - 從開(kāi)始菜單,指向設置\控制面板。雙擊添加/刪除程序,單擊添加/刪除 Windows 組件,然后單擊組件按鈕。
- “在 Windows 組件向導”中選擇 Internet 信息服務(wù) (IIS),然后單擊詳細信息。選擇 SMTP 服務(wù)組件,然后單擊確定。
注 要支持 SMTP 服務(wù),還需要其他幾個(gè) IIS 組件。它們是 Internet 信息服務(wù)管理單元、萬(wàn)維網(wǎng)服務(wù)器和公用文件組件。這些組件均是自動(dòng)選定的,且隨 SMTP 服務(wù)組件一起安裝。 配置 SMTP 服務(wù) 如果 SMTP 服務(wù)安裝在連接 Internet 的主機上,且面向 Internet 的防火墻不阻止 SMTP 通信訪(fǎng)問(wèn)端口 25,則 SMTP 服務(wù)的默認設置應能傳遞所有待發(fā)電子郵件。不過(guò),可能仍有一些要為 SMTP 服務(wù)器考慮的安全設置。其中大多數設置都可通過(guò)“Internet 服務(wù)管理器”管理控制臺進(jìn)行更改。 若要啟動(dòng) IIS 管理控制臺,請執行以下操作: - 從開(kāi)始菜單,指向程序\管理工具。
- 單擊 Internet 服務(wù)管理器以啟動(dòng)管理控制臺。
若要設置服務(wù)器日志記錄,請執行以下操作: - 在 Internet 信息服務(wù)對話(huà)框的左側窗格中展開(kāi)目錄樹(shù)。用鼠標右鍵單擊默認 SMTP 虛擬服務(wù)器,然后選擇屬性。
- 在屬性對話(huà)框中單擊常規選項卡。為該服務(wù)器選中啟用日志記錄復選框。默認情況下不啟用該屬性。
- 選擇首選的日志文件格式。默認設置為 W3C 擴充日志文件格式。
- 單擊日志文件格式下拉菜單旁邊的屬性按鈕。
- 如果需要,請調整日志文件翻轉的時(shí)間安排和文件名。
- 單擊擴展屬性選項卡。
- 選擇任何感興趣的項,然后單擊確定。
注 為了限制日志文件的大小,不應選擇過(guò)多的項。此處建議了一些可能有用的項:日期、時(shí)間、客戶(hù) IP 地址、用戶(hù)名、服務(wù)名、方法、發(fā)送字節數以及接收字節數。 若要設置訪(fǎng)問(wèn)控制,請執行以下操作: - 在屬性對話(huà)框中單擊訪(fǎng)問(wèn)選項卡。單擊中繼按鈕,控制可將電子郵件中繼至 SMTP 服務(wù)器的計算機。
- 在中繼限制對話(huà)框中單擊添加。
- 在計算機對話(huà)框中輸入允許通過(guò) SMTP 服務(wù)器中繼電子郵件的計算機 IP 地址。單擊確定應用更改。
注 如果待發(fā)郵件從同一臺計算機發(fā)送到 SMTP 服務(wù)器,則中繼權限的默認設置將能很好地工作。不過(guò),如果郵件從另一臺計算機發(fā)出,則需要將該計算機的 IP 地址或域名添加到權限列表中,以使中繼正常工作。 指定智能主機進(jìn)行中繼 如果 SMTP 服務(wù)器位于阻止所有直接 SMTP 通信(通過(guò)端口 25)的防火墻之后,則需查找網(wǎng)絡(luò )上是否有允許將所有 SMTP 郵件中繼至 Internet 的智能主機。 從根本上說(shuō),智能主機可以是另一臺具有待發(fā)電子郵件中繼權限的 SMTP 服務(wù)器,它將郵件從其他內部 SMTP 服務(wù)器直接中繼至 Internet。因此,智能主機應能同時(shí)連接內部網(wǎng)絡(luò )和 Internet,這樣才能充當電子郵件網(wǎng)關(guān)。 識別出網(wǎng)絡(luò )上的智能主機后,即可設置 SMTP 服務(wù)器。 若要設置 SMTP 服務(wù)器,請執行以下操作: - 在屬性對話(huà)框中單擊傳遞選項卡,然后單擊高級按鈕,打開(kāi)高級傳遞對話(huà)框。
- 在智能主機字段中鍵入智能主機完全合格的域名 (FQDN)?;蛘咻斎胫悄苤鳈C的 IP 地址,并在前后都加上 [ 和 ],如“[10.10.10.1]”。[] 有助于加快 DNS 的查詢(xún)進(jìn)程。
- 單擊確定完成上述更改。
驗證 SMTP 服務(wù) 有多種方式可驗證 SMTP 服務(wù)是否工作正常。 通過(guò)電子郵件客戶(hù)程序進(jìn)行測試 首先,可選擇使用標準的 Internet 電子郵件客戶(hù)程序(如 Microsoft Outlook® Express)進(jìn)行快速驗證。找到可指定待發(fā)電子郵件 (SMTP) 服務(wù)器的位置,將其更改為新的 SMTP 服務(wù)器域名。向通常使用的電子郵件地址發(fā)送測試郵件,驗證發(fā)送是否正常。 通過(guò)收取目錄進(jìn)行測試 也可以撰寫(xiě)一個(gè)符合 SMTP 規范 (RFC 822) 的簡(jiǎn)單電子郵件文本文件。下面是在記事本中輸入的示例文本文件內容: From:myname@mydomain.com To:someone@somedomain.com Subject:testing
This is the test message body.
只需將該文本文件復制或移到安裝了 SMTP 的收取目錄中。(默認路徑應為 "root:\Inetpub\mailroot\Pickup"。)SMTP 服務(wù)會(huì )定期檢查收取目錄,并嘗試發(fā)送在該目錄中找到的所有郵件。驗證是否能在目標收件箱中收到該測試郵件。 有關(guān)正確格式化郵件應遵循的 RFC 822 規范的詳細信息,請參閱 RFC 822 郵件格式。 通過(guò) CDO 進(jìn)行測試 驗證 SMTP 服務(wù)的另一方式是使用 Windows 2000 協(xié)作數據對象 (CDO) 編寫(xiě)簡(jiǎn)單的 Microsoft Visual Basic® Scripting Edition (VBScript) 腳本。 CDO for Windows 2000(a.k.a. CDO 2.0 或 Cdosys.dll)是一套設計用來(lái)簡(jiǎn)化 Internet 郵件創(chuàng )建或處理的協(xié)作組件。有了 CDO,開(kāi)發(fā)人員可以不必編寫(xiě)自己的 SMTP 通信代碼,而是使用 CDO 收發(fā)使用 SMTP 協(xié)議的郵件,也可通過(guò)本地收取目錄收發(fā)郵件。有關(guān)詳細信息,請參閱 CDO for Windows 2000 的相關(guān)文章。 下面是一個(gè) VBScript 示例,說(shuō)明如何使用 CDO 通過(guò) SMTP 服務(wù)傳遞郵件: set msg = WScript.CreateObject("CDO.Message") msg.From = "myname@mydomain.com" msg.To = "someone@somedomain.com" msg.Subject = "testing" msg.TextBody = "This is a test message body."
msg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtpserver.mydomain.com"
msg.Configuration.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
msg.Configuration.Fields.Update msg.Send
上述代碼示例的前五行創(chuàng )建 CDO 對象,并指定郵件的基本信息。 接下來(lái)的兩行代碼使用 CDO Configuration 對象設置各配置設置的字段值。每個(gè)字段由兩部分組成:名稱(chēng)空間前綴(如 "http://schemas.microsoft.com/cdo/configuration/")和本地名稱(chēng)(如 "smtpserver")。 該機制基于萬(wàn)維網(wǎng)聯(lián)盟 (W3C) 的 XML 格式的名稱(chēng)空間推薦標準 (http://www.w3c.org/TR/REC-xml-names/),主要用于提供一致性,以及促進(jìn)與其他相關(guān)版本的 CDO 組件的兼容性。 字段 "smtpserver" 指定 SMTP 服務(wù)器的域名(或 IP 地址),而字段 "sendusing" 定義應使用本地 SMTP 服務(wù)投信目錄發(fā)送郵件,還是通過(guò)網(wǎng)絡(luò )直接發(fā)送至 SMTP 服務(wù)器。后一字段的值設置為 2,表示通過(guò)網(wǎng)絡(luò )將郵件發(fā)送至指定的 SMTP 服務(wù)器。 最后兩行代碼更新配置設置,并啟動(dòng)郵件傳遞。 使用 CDO 組件的這一方法對于驗證 SMTP 服務(wù)來(lái)說(shuō)可能顯得多余。不過(guò),該腳本經(jīng)證明對其他系統管理任務(wù)很有用。例如,當某些系統計數器超出指定閾值時(shí),可在為電子郵件通知編寫(xiě)的“性能日志和警報”程序中使用該腳本。 識別失敗的傳遞 無(wú)論因何種原因而無(wú)法傳遞電子郵件時(shí)(例如,用戶(hù)名或電子郵件地址錯誤),都會(huì )將該傳遞失敗的郵件重定向至死信目錄。死信目錄的默認位置應為 "root:\Inetpub\mailroot\Badmail"。檢查被拒電子郵件的內容,并查找是否有任何特定的錯誤消息。如果可能,則更正錯誤,并再次通過(guò)上面討論的一種傳遞方法重發(fā)郵件。 除死信目錄外,電子郵件也可在隊列目錄中保存一段指定時(shí)間。(此設置的指定方法為:在默認 SMTP 虛擬服務(wù)器屬性對話(huà)框的傳遞選項卡中調整出站重試間隔。)如果因為網(wǎng)絡(luò )繁忙或網(wǎng)絡(luò )連接斷開(kāi)而無(wú)法立即傳遞郵件,郵件則會(huì )存儲在隊列目錄中,并按指定間隔再次發(fā)送。如果 SMTP 在幾次傳遞嘗試不成功之后放棄傳遞,郵件將最終移至死信目錄。 結論 Windows 2000 中的 Internet 信息服務(wù)提供的 SMTP 服務(wù)是一個(gè)簡(jiǎn)單且強大的組件,用它傳遞待發(fā)電子郵件非常劃算。它使系統管理員不必再為實(shí)現可靠的 Internet 電子郵件傳送而建立復雜的郵件傳遞系統。如果與 CDO for Windows 2000 一起使用,開(kāi)發(fā)人員不用編寫(xiě)太多代碼,即能實(shí)現 SMTP 通信。
請以 IE4.0 以上版本 800 * 600 瀏覽本站 與我們聯(lián)系 | 免費郵件 © 2006 Microsoft Corporation 版權所有.保留所有權利. 隱私聲明. Microsoft 輔助功能 |