SMTP 如何運作?
Simple Mail Transfer Protocol 是一種重要的 Internet 通訊協定 (IP),可以有效而穩定的傳送電子郵件。SMTP 背後的點子相當簡單,使用者或應用程式 (此處是指 Duwamish Online) 撰寫一份訊息,其中除了訊息主旨和內容之外,還附上收件人的電子郵件地址 (例如,"johndoe@somecompany.com")。
接著將訊息傳送給指定的 SMTP 伺服器。SMTP 伺服器會根據收件人電子郵件地址的網域名稱 (例如,"somecompany.com"),與網域名稱系統 (DNS) 伺服器通信,後者則針對該網域,查閱並傳回目的 SMTP 伺服器的主機名稱 (例如,"mail.somecompany.com")。
最後,起始的 SMTP 伺服器再透過 Transmission Control Protocol/Internet Protocol (TCP/IP) 連接埠 25,直接與目的 SMTP 伺服器通信。如果收件人電子郵件地址的使用者名稱,與目的伺服器中的一個授權使用者帳戶相符,原始電子郵件訊息就會傳送到該伺服器,並等候收件人透過用戶端程式來收取訊息。
如果起始 SMTP 伺服器無法直接與目的伺服器通信,SMTP 通訊協定也會提供機制,透過一個以上的中繼轉接 SMTP 伺服器來傳送訊息。轉接伺服器在收到原始訊息後,會將它傳送給目的伺服器,或是重新導向給另一個轉接伺服器。這個程序會一直反覆執行,直到訊息傳送出去,或是超過指定的等候時間為止。
以 CDO 加以測試
另一個驗證 SMTP 服務的方法,就是用 Collaboration Data Objects (CDO) for Windows 2000 撰寫簡單的 Microsoft Visual Basic® Scripting Edition (VBScript) 指令檔。
CDO for Windows 2000 (又稱為 CDO 2.0 或 Cdosys.dll) 是一種合作元件的套件,主要是用來簡化 Internet 訊息的建立或操作。開發人員可以使用 CDO,透過 SMTP 通訊協定和本機Pickup 目錄來收送訊息,而不必自已撰寫程式碼來進行 SMTP 通信。其他詳細資訊,請參閱有關 CDO for Windows 2000 的文章,網址為 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cdosys/html/ecdb51f4-5ba0-46d8-9c7c-7e4154a18f50.asp
下面這個 VBScript 範例所示範的是,如何使用 CDO,透過 SMTP 服務來傳遞訊息:
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這個程式碼範例在前五行建立了 CDO 物件,並指定訊息的基本資訊。
接下來的兩行則使用 CDO 組態物件來設定各種組態設定的欄位值。每一個欄位都由兩個部份所組成:名稱環境首碼 (如 "http://schemas.microsoft.com/cdo/configuration/") 以及本機名稱 (如 "smtpserver")。
這個機制是以 World Wide Web Consortium (W3C) XML 格式的名稱環境建議 (http://www.w3c.org/TR/REC-xml-names/) 為依據,主要是在其他相關版本的 CDO 元件之間提供一致性和相容性。
"smtpserver" 欄位可指定 SMTP 伺服器的網域名稱 (或 IP 位址),而 "sendusing" 欄位則定義是要使用本機 SMTP 服務放置目錄來傳送訊息,還是直接透過網路傳到 SMTP 伺服器。後者的值設為 2,意思是透過網路,將訊息傳到指定的 SMTP 伺服器。
程式碼的最後兩行則是更新組態設定,並啟動訊息的傳遞作業。
使用 CDO 元件來驗證 SMTP 服務是有點大材小用,不過,指令檔對於其他系統管理作業來說卻是相當有用。舉個例說,指令檔可以用在「效能記錄檔及警示」程式中,當某些系統計數器超過指定的臨界值時,即以電子郵件發出通知。
指出傳遞失敗
如果電子郵件訊息因故無法傳遞 (例如,使用者名稱或電子郵件地址不對),它會重新導向Badmail 目錄。根據預設值,Badmail 目錄的位置應該是在"root:\Inetpub\mailroot\Badmail"。請檢查被退回的電子郵件內容和錯誤訊息,儘可能更正錯誤,然後再透過剛剛所討論的其中一種傳遞方法,將訊息再重新傳送一次。
除了 Badmail 目錄之外,電子郵件訊息也可以放在 Queue 目錄下長達一段指定時間(您可以調整 [預設 SMTP 虛擬伺服器內容] 對話方塊的 [傳送] 標籤中的輸出 [重試間隔],來指定這個設定值)。如果因為網路忙線或當掉,而無法立即傳遞訊息,訊息就會儲存在這個 Queue 目錄下,每隔指定的間隔時間再加以傳送。如果 SMTP 在幾次失敗之後放棄傳遞,那麼訊息最後就會被送到 Badmail 目錄下。
A frequently asked question is how to create a box with a scroll bar for displaying content. Okay, I'll tell you, but first I have to rant a bit. I just hate those little scrolling boxes. Now this is just my opinion and it's a gross over generalized one at that, but I believe that most people who want this functionality simply don't understand how web pages work. They design some lovely layout in an image editor with beautiful graphics on the left, right, top, and bottom. Everything is sliced to perfection. Now, when they start adding real content to the page, it starts pulling the graphics apart. You can read more about the exploding tables phenomenon in my 



