用Java實現SMTP服務器
電子郵件傳遞可以由多種協議來實現。目前,在Internet 網上最流行的三種電子郵件協議是SMTP、POP3 和 IMAP,下面分別簡單介紹。
◆ SMTP 協議
簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP)是一個運行在TCP/IP之上的協議,用它發送和接收電子郵件。SMTP 服務器在默認端口25上監聽。SMTP客戶使用一組簡單的、基于文本的命令與SMTP服務器進行通信。在建立了一個連接后,為了接收響應,SMTP客戶首先發出一個命令來標識它們的電子郵件地址。如果SMTP服務器接受了發送者發出的文本命令,它就利用一個OK響應和整數代碼確認每一個命令。客戶發送的另一個命令意味著電子郵件消息體的開始,消息體以一個圓點“.”加上回車符終止。
◆ POP3 協議
郵局協議(Post Office Protocol Version 3,POP3)提供了一種對郵件消息進行排隊的標準機制,這樣接收者以后才能檢索郵件。POP3服務器也運行在TCP/IP之上,并且在默認端口110上監聽。在客戶和服務器之間進行了初始的會話之后,基于文本的命令序列可以被交換。POP3客戶利用用戶名和口令向POP3服務器認證。POP3中的認證是在一種未加密的會話基礎之上進行的。POP3客戶發出一系列命令發送給POP3服務器,如:請求客戶郵箱隊列的狀態、請求列出的郵箱隊列的內容和請求檢索實際的消息。POP3代表一種存儲轉發類型的消息傳遞服務。現在,大部分郵件服務器都采用SMTP發送郵件,同時使用POP3接收電子郵件消息。
◆ IMAP 協議
Internet 消息訪問協議(Internet Message Access Protocol,IMAP)是一種電子郵件消息排隊服務,它對POP3的存儲轉發限制提供了重要的改進。IMAP也使用基于文本命令的語法在TCP/IP上運行,IMAP服務器一般在默認端口143監聽。IMAP服務器允許IMAP客戶下載一個電子郵件的頭信息,并且不要求將整個消息從服務器下載至客戶,這一點與POP3是相同的。IMAP服務器提供了一種排隊機制以接收消息,同時必須與SMTP相結合在一起才能發送消息。
下面以SMTP發送電子郵件為例講解怎樣用Java 實現SMTP 服務器應用功能,從而完成郵件的發送的。
SMTP 命令
SMTP協議是目前網上流行的發送E-Mail的協議,SMTP協議共有14條命令。不過,發一封E-Mail只需用如下5條命令就足夠了,分別為:
◆ HELO <SP> <domain> <CRLF> ,與SMTP服務器握手,傳送本機域名;
◆ MAIL <SP> FROM:<reverse-path> <CRLF>,傳送發信者的信箱名稱;
◆ RCPT <SP> TO:<forward-path> <CRLF>,傳送接收者的信箱名稱;
◆ DATA <CRLF>,發送信件數據(包括信頭和信體);
◆ QUIT <CRLF>,退出與SMTP服務器的連接。