現如今,電子郵件在我們的生活當中扮演著越來越重要的角色,我們每個人幾乎都會與其打交道(至少時不時我們都會接收到莫名其妙的垃圾郵件),在工作中,使用郵件進行交流溝通,可以使我們的工作有跡可循,也顯的較為正式,這是由我們人為手工操作的,在生活中,在某網站注冊了一個賬戶之後,該網站就會自動發送一封歡迎郵件並讓我們確認是否注冊,以防止惡意注冊,當然,這個就不可能像我們工作中手工方式來進行操作了,Java的13種核心技術中的JavaMail為我們提供了API來對郵件進行相關的操作。
一、郵件服務器
要在Internet上提供電子郵件功能,必須有專門的電子郵件服務器。Internet上架設了大量的電子郵件服務器,例如,sina.com、qq.com、163.com等網站提供了面向公眾免費的電子郵件服務器,許多公司也提供了面向內部員工的電子郵件服務器,這些電子郵件服務器彼此之間都可以發送和接收電子郵件。那郵件服務器的作用是什麼呢,它可以幫我們把郵件發出去,也可以幫我們把郵件接收進來,還可以為我們提供取郵件的服務,這個類似於現實生活中的郵局,既可以接收郵件,也可以為我們取郵件提供服務,還可以幫我們發送郵件。下面的圖片形象的說明了郵件服務器的功能
(1)接收用戶投遞的郵件;
(2)將用戶投遞進來的郵件轉發給目標郵件服務器;
(3)接收其他郵件服務器轉發來的郵件並把郵件存儲到其管理的用戶郵箱中;
(4)為前來讀取郵件的用戶提供讀取服務。
郵件服務器按通訊協議可以劃分為兩種類型:SMTP服務器和POP3/IMAP服務器,上圖中的1、2、3的功能就是由SMTP服務器完成的,而4的功能則是由POP3服務器完成的。
二、電子郵箱
每個電子郵件服務器之上都可以開設多個電子郵箱,電子郵箱也稱之為E-mail地址,它類似現實生活中的通訊地址,用戶可通過這個地址接收別人發來的電子郵件和向別人發送電子郵件。電子郵箱的獲得需要在郵件服務器上進行申請,確切地說,電子郵箱其實就是用戶在郵件服務器上申請的一個帳戶。郵件服務器把接收到的郵件保存到為某個帳戶所分配的郵箱空間中(所以我們需要定期清理我們的郵件,否則超過了分配的空間則無法接收到新的郵件),用戶通過其申請的用戶名和密碼登陸到郵件服務器上查收該地址已收到的電子郵件。
三、電子郵件的傳輸過程
電子郵件的傳輸過程可以用下圖來表示
上圖過程描述:
1、[email protected]的郵件客戶端與sina的SMTP服務器建立網絡連接,並以lisi的用戶名和密碼進行登錄後,使用SMTP協議把郵件發送給sina的SMTP服務器;
2、sina的SMTP服務器收到[email protected]提交的地址郵件後,首先跟據收件人的地址後綴接收者得月街地址是否屬於該SMTP服務器的管轄范圍,如果是就直接把郵件存儲到收件人的郵箱中,否則,sina的SMTP服務器向DNS服務器查詢收件人的郵件地址後綴(sohu.com)所表示的域名的MX記錄,從而得到sohu的SMTP服務器信息,然後與soho的SMTP服務器建立連接並采用SMTP協議吧郵件發送給sohu的SMTP服務器;
3、soho的SMTP服務器收到sina的SMTP服務器發來的電子郵件後,也將根據收件人的地址判斷該喲就是否屬於該SMTP服務器的管轄范圍,如果是的話就直接把郵件存儲到收件人的郵箱中,否則,sohu的SMTP服務器可能繼續轉發這封郵件;
4、[email protected]賬號通過客戶端與soho的POP3/IMAP服務器建立網絡連接,並成功登錄後,然後通過POP3/IMAP協議查看[email protected]郵箱中是否有新郵件,如果有,則使用POP3或IMAP協議讀取郵箱中的郵件。
以上內容大部分摘抄自《Java郵件開發詳解》一書。