世界的第一封電子郵件
1969年10月世界上的第一封電子郵件是由計算機科學(xué)家 K.教授發(fā)給他的同事的一條簡短消息。
據(jù)《互聯(lián)網(wǎng)周刊》報道世界上的第一封電子郵件是由計算機科學(xué)家 K.教授發(fā)給他的同事的一條簡短消息(時間應(yīng)該是1969年10月),這條消息只有兩個字母:"LO"。 K.教授因此被稱為電子郵件之父。所以第一條網(wǎng)上信息就是‘LO’,意思是‘你好!’”
當(dāng)然這個說法也有一點爭議,另外一種說法是麻省理工學(xué)院博士Ray 發(fā)送的第一封郵件,這里不再展開討論。
中國的第一封電子郵件
1987年9月14日中國第一封電子郵件是由“德國互聯(lián)網(wǎng)之父”維納·措恩與王運豐在當(dāng)時的兵器工業(yè)部下屬單位—計算機應(yīng)用技術(shù)研究所(簡稱ICA)發(fā)往德國卡爾斯魯厄大學(xué)的,其內(nèi)容為德文和英文雙語,第一段大意如下:
原文:“ the Great Wall we can reach every in the world. ”
中文大意:“ 越過長城,我們可以到達世界的每一個角落。 ”
這是中國通過北京與德國卡爾斯魯厄大學(xué)之間的網(wǎng)絡(luò)連接,發(fā)出的第一封電子郵件。現(xiàn)在看這封郵件內(nèi)容,頗具深意呀!
電子郵件的發(fā)展
雖然電子郵件是在70年代發(fā)明的,它卻是在80年才開始有人用,70年代的沉寂主要是由于當(dāng)時使用網(wǎng)絡(luò)的人太少,網(wǎng)絡(luò)的速度也僅為目前標(biāo)準(zhǔn)速度的二十分之一。受網(wǎng)絡(luò)速度的限制,那時的用戶只能發(fā)送些簡短的信息,根本別想像現(xiàn)在這樣發(fā)送大量照片。
到80年代中期,個人電腦興起,電子郵件開始在電腦迷以及大學(xué)生中廣泛傳播開來;到90年代中期,互聯(lián)網(wǎng)瀏覽器誕生,全球網(wǎng)民人數(shù)激增,電子郵件被廣為使用。2000零幾年的時候,那時候沒有網(wǎng)盤,上大學(xué)的時候常常使用郵箱存儲東西,那時候的郵箱也主要以網(wǎng)易為主;到了現(xiàn)在,幾乎每個人都有好幾個郵箱,QQ郵箱、126郵箱、公司郵箱。
郵件協(xié)議
發(fā)送郵件的本質(zhì)是將一個人的信息傳輸給另外一個人,那么如何傳輸就需要商量好標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)就是協(xié)議。最初只有兩個協(xié)議:
SMTP協(xié)議
SMTP 的全稱是“ Mail ”,即簡單郵件傳輸協(xié)議。它是一組用于從源地址到目的地址傳輸郵件的規(guī)范發(fā)送離線文件是什么意思,通過它來控制郵件的中轉(zhuǎn)方式。它的一個重要特點是它能夠在傳送中接力傳送郵件,即郵件可以通過不同網(wǎng)絡(luò)上的主機接力式傳送。
SMTP 認證,簡單地說就是要求必須在提供了賬戶名和密碼之后才可以登錄 SMTP 服務(wù)器,這就使得那些垃圾郵件的散播者無可乘之機。增加 SMTP 認證的目的是為了使用戶避免受到垃圾郵件的侵擾。
SMTP主要負責(zé)底層的郵件系統(tǒng)如何將郵件從一臺機器傳至另外一臺機器。
POP3協(xié)議
POP3是Post 3的簡稱,即郵局協(xié)議的第3個版本,它規(guī)定怎樣將個人計算機連接到的郵件服務(wù)器和下載電子郵件的電子協(xié)議。它是因特網(wǎng)電子郵件的第一個離線協(xié)議標(biāo)準(zhǔn),POP3允許用戶從服務(wù)器上把郵件存儲到本地主機(即自己的計算機)上,同時刪除保存在郵件服務(wù)器上的郵件。
POP 協(xié)議支持“離線”郵件處理。其具體過程是:郵件發(fā)送到服務(wù)器上,電子郵件客戶端調(diào)用郵件客戶機程序以連接服務(wù)器,并下載所有未閱讀的電子郵件。這種離線訪問模式是一種存儲轉(zhuǎn)發(fā)服務(wù),將郵件從郵件服務(wù)器端送到個人終端機器上,一般是 PC機或 MAC。一旦郵件發(fā)送到 PC 機或 MAC上,郵件服務(wù)器上的郵件將會被刪除。但目前的POP3郵件服務(wù)器大都可以“只下載郵件,服務(wù)器端并不刪除”,也就是改進的POP3協(xié)議。
SMTP和POP3是最初的兩個協(xié)議,隨著郵件的不斷發(fā)展后來又增加了兩個協(xié)議:
IMAP協(xié)議
全稱 Mail (交互式郵件存取協(xié)議),IMAP是斯坦福大學(xué)在1986年開發(fā)的一種郵件獲取協(xié)議,即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標(biāo)準(zhǔn)協(xié)議之一。不同的是,開啟了IMAP后,在電子郵件客戶端收取的郵件仍然保留在服務(wù)器上,同時在客戶端上的操作都會反饋到服務(wù)器上發(fā)送離線文件是什么意思,如:刪除郵件,標(biāo)記已讀等,服務(wù)器上的郵件也會做相應(yīng)的動作。所以無論從瀏覽器登錄郵箱或者客戶端軟件登錄郵箱,看到的郵件以及狀態(tài)都是一致的。
IMAP的一個與POP3的區(qū)別是:IMAP它只下載郵件的主題,并不是把所有的郵件內(nèi)容都下載下來,而是你郵箱當(dāng)中還保留著郵件的副本,沒有把你原郵箱中的郵件刪除,你用郵件客戶軟件閱讀郵件時才下載郵件的內(nèi)容。較好支持這兩種協(xié)議的郵件客戶端有:,,等。
Mime協(xié)議
由于SMTP這個協(xié)議開始是基于純ASCⅡ文本的,在二進制文件上處理得并不好。后來開發(fā)了用來編碼二進制文件的標(biāo)準(zhǔn),如MIME,以使其通過SMTP來傳輸。今天,大多數(shù)SMTP服務(wù)器都支持8位MIME擴展,它使二進制文件的傳輸變得幾乎和純文本一樣簡單。
郵件發(fā)送流程
Java和郵件
最早期使用Java Mail進行發(fā)送郵件
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendEmail{
? public static void main(String [] args){ ?
? ? ?// 收件人電子郵箱
? ? ?String to = "ityouknow@gmail.com";
? ? ?// 發(fā)件人電子郵箱
? ? ?String from = "webMail@gmail.com";
? ? ?// 指定發(fā)送郵件的主機為 localhost
? ? ?String host = "localhost";
? ? ?// 獲取系統(tǒng)屬性
? ? ?Properties properties = System.getProperties();
? ? ?// 設(shè)置郵件服務(wù)器
? ? ?properties.setProperty("mail.smtp.host", host);
? ? ?// 獲取默認session對象
? ? ?Session session = Session.getDefaultInstance(properties);
? ? ?try{
? ? ? ? // 創(chuàng)建默認的 MimeMessage 對象
? ? ? ? MimeMessage message = new MimeMessage(session);
? ? ? ? // Set From: 頭部頭字段
? ? ? ? message.setFrom(new InternetAddress(from));
? ? ? ? // Set To: 頭部頭字段
? ? ? ? message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
? ? ? ? // Set Subject: 頭部頭字段
? ? ? ? message.setSubject("This is the Subject Line!");
? ? ? ? // 設(shè)置消息體
? ? ? ? message.setText("This is actual message");
? ? ? ? // 發(fā)送消息
? ? ? ? Transport.send(message);
? ? ? ? System.out.println("Sent message successfully....");
? ? ?}catch (MessagingException mex) {
? ? ? ? mex.printStackTrace();
? ? ?}
? }
}
在后來有了,一切變的更簡單
public void simpleSend() {
? ?// 構(gòu)建簡單郵件對象,見名知意
? ?SimpleMailMessage smm = new SimpleMailMessage();
? ?// 設(shè)定郵件參數(shù)
? ?smm.setFrom(mailSender.getUsername());
? ?smm.setTo("ityouknow@126.com");
? ?smm.setSubject("Hello world");
? ?smm.setText("Hello world via spring mail sender");
? ?// 發(fā)送郵件
? ?mailSender.send(smm);
}
貌似幾句就搞定了,可以看出的力量還是很強大的。
Boot And Mail
再到了后來, Boot就出現(xiàn)了,更加簡單了郵件發(fā)送的步驟,想了解如何使用 Boot發(fā)送郵件看這里: