程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 解析電子郵件的根本概念及JavaMail API郵件功效應用

解析電子郵件的根本概念及JavaMail API郵件功效應用

編輯:關於JAVA

解析電子郵件的根本概念及JavaMail API郵件功效應用。本站提示廣大學習愛好者:(解析電子郵件的根本概念及JavaMail API郵件功效應用)文章只能為提供參考,不一定能成為您想要的結果。以下是解析電子郵件的根本概念及JavaMail API郵件功效應用正文


電子郵件的根本概念引見
電子郵件用於網上的信念傳遞和交換,它是最主要的Internet辦事之一。據統計Internet有30%的營業是電子郵件有關的。同時我們也弗成否定它在我們的平常生涯、任務辦公方面飾演著很主要的腳色。比方:很多辦公主動化項目(OA)中都要附帶發送郵件的功效,假如還要應用OutLook等手工方法就不合適,在這個高速的時期,我們須要供給任務效力,讓任務可以或許主動化。同時在很多網站中也都須要附帶發送郵件的功效:給新注冊的用戶發送一封包括其注冊信息的迎接E-Mail、將網站的最新運動信息經由過程E-Mail發送給一切的注冊會員等等。
 
在開端電子郵件開辟前:我們須要明確一下幾個概念:電子郵件體系、郵件辦事器、電子郵件、郵件客戶端軟件、郵件傳輸協定、電子郵件的傳輸進程。
 
電子郵件體系
與傳統的郵政辦事相相似,電子郵件體系由電子郵局、電子郵件發送、吸收體系構成。發送者和吸收者經由過程電子郵件發送、吸收體系來發送和吸收電子郵件,他們現實上是運轉在盤算機上的郵件客戶端法式。電子郵局起著一個橋梁的感化,它現實上是運轉在辦事器上的郵件辦事器法式。電子郵件的處置流程也和郵政辦事相相似。

郵件辦事器
郵件辦事器是一種用來擔任電子郵件收發治理的裝備。在Internet上供給了年夜量的電子郵件辦事器,如:126、163、hotmail…。
電子郵件辦事器重要供給的功效:
1、  吸收用戶送達的郵件。
2、  將用戶送達出去的郵件轉發給目的郵件辦事器。
3、  吸收其他電子郵件辦事器轉發來的郵件並該郵件存儲到其治理的用戶郵中。
4、  為前來讀取郵件的用戶供給讀取郵件的辦事。
郵件辦事器組成了電子郵件體系的焦點。每一個收信人都有一個位於某個郵件辦事器上的郵箱(mailbox)。Bob的郵箱用於治理和保護曾經發送給他的郵件新聞。一個郵件新聞的典范路程是從發信人的用戶署理開端,郵件發信人的郵件辦事器,直達到收信人的郵件辦事器,然後送達到收信人的郵箱中。當Bob想檢查本身的郵箱中的郵件新聞時,寄存該郵箱的郵件辦事器將以他供給的用戶名和口令認證他。Alice的郵件辦事器還得處置Bob的郵件辦事器出毛病的情形。假如Alice的郵件辦事器沒法把郵件新聞立刻遞送到Bob的郵件辦事器,Alice的辦事器就把它們寄存在新聞隊列(message queue)中,今後再測驗考試遞送。這類測驗考試平日每30分鐘閣下履行一次:如果過了若干天仍何嘗試勝利,該辦事器就把這個新聞從新聞隊列中去除失落,同時以另外一個郵件新聞告訴發信人(即Alice)。
 
電子郵件
電子郵件是一種經由過程收集完成互相傳送和吸收信息的古代化通訊方法。它是—種用電子手腕供給信息交流的通訊方法,是Internet運用最廣的辦事,經由過程收集的電子郵件體系,用戶可以用異常昂貴的價錢,以異常疾速的方法,與世界上任何一個角落的收集用戶接洽,這些電子郵件可所以文字、圖象、聲響等各類方法。同時,用戶可以獲得年夜量收費的消息、專題郵件,並完成輕松的信息搜刮。
電子郵件由信封和內容兩個部門構成。信封又稱郵件頭,電子郵件辦事器依據信封上的信念來傳遞郵件的。內容稱為郵件體,它用於供給郵件的詳細內容。
Internet上的電子郵件地址全球獨一,其格局為“郵箱名@郵件辦事器域名”。域(郵件域)是電子郵件辦事器的根本治理單元,郵件辦事以域為基本,每一個郵箱對應一個用戶。個中郵件辦事器域名必需是已注冊的DNS域名,而且必需要與MX(郵件交流機)記載婚配。DNS用於將域名、主機名解析為IP地址。MX記載指向該域名的郵件辦事器主機記載,為郵件辦事公用。
 
郵件客戶端軟件
郵件客戶端軟件擔任與郵件辦事器通信,重要用於贊助用戶將郵件發送給SMTP辦事器和POP3/IMAP郵件辦事器讀取用戶的電子郵件。郵件客戶端軟件平日集撰寫、發送、吸收郵件於一體。
 
電子郵箱
每個電子郵件辦事器之上都可以開端多個電子郵箱,電子郵箱也稱之為E-Mail地址。它相似於實際生涯中的通信地址,用戶經由過程它接收他人發來的電子郵件和向他人發送電子郵件。
       電子郵箱的取得須要在電子郵件辦事器長進行請求,確實的說,電子郵箱其實就是用戶在郵件辦事器上請求的一個賬戶。郵件辦事器把吸收到的郵件堅持到為某個賬戶所分派的郵箱空間中,用戶經由過程其請求的用戶名和暗碼上岸到郵件辦事器上檢查該地址曾經收到的電子郵件。
 
電子郵件的傳輸進程
電子郵件體系采取客戶/辦事器形式。電子郵件傳送須要用到以下3個主要模塊:
UA(Mail User Agent,郵件用戶署理):用戶經由過程它與電子郵件辦事器打交道。MUA現實上就是郵件客戶端軟件。
MTA(Mail Transfer Agent,郵件傳輸署理):它重要擔任處置一切吸收和發送的郵件,為MUA或許MTA供給郵件發送辦事,吸收其他MTA發送過去的郵件。
MDA(Mail Delivery Agent,郵件送達署理):它擔任郵件當地送達。當MTA決議某郵件發送當地用戶時,MTA將郵件交給MDA法式停止分發,也就是說送達到用戶的。
詳細的傳遞進程以下:
1、  發件人應用MUA將郵件發送給MTA。
2、 MTA收到郵件後斷定收件人是否是當地賬戶,假如是當地賬戶,交由MDA投送到該賬戶的郵箱中,完成發送進程,跳到第5步。假如不是則履行下一步調。
3、 MTA依據其郵件中繼轉發設置來決議若何轉發郵件。
4、  終究目標的MTA將遭到的交給他的MDA處置,有MDA將郵件送達到收件人的郵箱中。
5、  收件人應用MUA經由過程POP/IMAP協定銜接到郵箱地點的辦事器,要求檢查本身的收件箱能否有郵件,假如有郵件,將會經由過程它傳送個收件人的MUA。
留意:提醒郵件拜訪辦事的是POP或許IMAP辦事器軟件,而並不是現在收下郵件的MTA,二者的腳色是分別的。
 
郵件傳輸協定
電子郵件辦事傳輸重要是用到以下3中收集協定
SMTP(簡略郵件傳輸協定)
SMTP是Simple Mail Transfer Protocol。尺度TCP端口是25。MUA將郵件發送到MTA,MTA將郵件發送給下一個MTA,都是要應用SMTP。SMTP的目的是靠得住高效地傳送郵件,它自力於傳送子體系並且僅請求一條可以包管傳送數據單位次序的通道。
SMTP是一個“單向”的協定,它不克不及用戶從其他郵件辦事器收取郵件。它自己是采取客戶/辦事器形式,擔任發送郵件的SMTP過程就是SMTP客戶端,擔任吸收郵件的SMTP過程就是SMTP辦事器。一個完全的SMTP通訊進程重要包含樹立銜接、傳送郵件、釋放銜接三個進程。
樹立銜接:起首由發件人將要發送的郵件發送到郵件緩存,SMTP客戶端按期掃描郵件緩存,一旦發明有郵件,就與SMTP辦事器樹立TCP銜接,然後發送HRLLO敕令以附上發送方的主機名。
傳送郵件:SMTP客戶端應用MAIL敕令開端傳送郵件,該敕令供給發件人的地址;然後履行RCPT敕令,並供給收件人地址;最初履行DATA敕令傳送郵件內容。
釋放銜接:郵件傳送終了後,SMTP客戶端發送OUT敕令要求封閉TCP銜接。
POP(郵局協定)
POP是Post Office Protocol。尺度TCP端口為110。重要用於電子郵件的吸收。MUA經過POP協定銜接到MTA的用戶收件箱,以讀取或下載用戶在收件箱中郵件。
今朝用的較多的POP協定是POP3。POP3應用 TCP 作為傳輸協定。
IMAP(Internet信息拜訪協定)
IMAP是Internet Message Access Protocol。尺度TCP端口為143,它也是讓MUA從MTA收取郵件。目的球IMAP協定的版本為IMAP4。
POP和IMAP二者都可以用於收取郵件,都是采取客戶/辦事器形式,二者最重要的差別就在於他們檢索郵件的方法分歧。應用POP時,郵件駐留在辦事器中個,一旦吸收郵件,郵件都從辦事器高低載到用戶盤算機上。而IMAP則可以或許然該用戶懂得到辦事器上存儲郵件的情形,已下載的郵件依然滯留在辦事器中,以便於完成郵件歸檔和同享。
 
JavaMail
1、JavaMail簡介
JavaMail,望文生義,供給給開辟者處置電子郵件相干的編程接口。它是Sun宣布的用來處置email的API。它可以便利地履行一些經常使用的郵件傳輸。JavaMail API是Sun公司為便利Java開辟人員在運用法式中完成郵件發送和吸收功效而供給的一套尺度開辟包,它支撐一些經常使用的郵件協定,如:SMTP、POP3、IMAP。開辟人員應用JavaMail API編寫郵件處置軟件時,不必斟酌郵件協定底層的完成細節,只需挪用JavaMail開辟包中響應的API類便可以了。

2、JavaMail開辟情況
在停止JavaMail開辟之前必需要導入響應的jar包。該jar包可以到oracle的官網下面下載:http://www.oracle.com/technetwork/java/javamail/index.html。
下載完成後解壓可以獲得以下一個目次:

個中mail.jar:就是開辟javamail法式所必需要用到的焦點開辟包。
lib子目次:該目次下包括5個自力的郵件開辟包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,這5個jar文件是對mail.jar文件的分類包裝。個中mailapi.jar封裝了創立郵件內容和面向通俗開辟人員挪用郵件發送和吸收的API類,其它三個jar文件則是封裝了它們稱號絕對應協定的辦事完成法式。。在編譯Java郵件法式時,只須要mailapi.jar文件便可,然則,在運轉時必需要有響應郵件協定的底層辦事完成法式。假如運用法式中只須要應用到郵件發送功效,則可以只裝置smtp.jar和mailapi.jar這兩個文件,假如運用法式只須要應用郵件的吸收功效,則可以只裝置pop3.jar或imap.jar和mailapi.jar這兩個jar文件,而不消裝置全部mail.jar文件。
Lib目次以下:

3、JavaMail API的引見
JavaMail API按其功效劃分平日分為以下三年夜類“:
1、創立息爭析郵件內容的API。Message類是創立息爭析郵件的焦點API。它的實例對象代表了一封電子郵件。
2、發送郵件的API。Transport類是發送郵件的焦點API類,它的實例對象代表完成了某個郵件發送協定的郵件發送對象,如SMTP協定。
3、吸收郵件的API。Store類是吸收郵件的焦點API類,它的實例對象代表了完成某個郵件吸收協定的郵件吸收對象,例如POP3協定。
JavaMail的任務流程以下:

在這個任務流程中,Message、Session、Transport、Store四個對象慎密相連的完成一封電子郵件的發送和吸收。我們只須要懂得這個四個焦點API的功效和感化,曉得他們的任務關系和電子郵件的任務流程,就可以夠很輕易的編寫出JavaMail來了。關於JavaMail的幫助類而言,當我們須要他們的時刻可以順籐摸瓜,檢查文檔來處理。
        
焦點API的引見:
Message
Message 類是創立息爭析郵件的焦點API,它的實例對象代表一封電子郵件。在客戶端發送郵件時,先穿件郵件的API,將創立的郵件的數據封裝到Message對象中,然後把這個對象傳遞給郵件發送API發送出去。在客戶端吸收到郵件時,郵件吸收API把吸收的油價數據裝在Message的實例對象中,客戶端在應用郵件解析API從這個對象中解析出來吸收到的郵件數據。
        
Session
Session 類用於界說全部運用法式所需的情況信息,和搜集客戶端與郵件辦事器樹立收集銜接的會話信息,如郵件辦事器的主機名、端標語、采取的郵件發送和吸收協定等。Session對象依據這些會話信息構建郵件收發的Store和Transport對象,和為客戶端創立Message對象供給信息支撐。

Transport
Transport 類是發送郵件的焦點API類,它的實例對象,代表完成了某個郵件發送協定的郵件發送對象,例如SMTP 協定。客戶端法式創立好Message對象後,只須要應用郵件發送API獲得 Transport 對象,然後把 Message 對象傳遞給 Transport 對象,並挪用它的發送辦法,便可以把郵件發送給指定的SMTP辦事器。
Store
Store 類是吸收郵件的焦點API類,它的實例對象代表完成某個郵件吸收協定的郵件吸收對象,例如POP3和IMAP協定。客戶端法式吸收郵件時,只須要應用郵件吸收API獲得Store對象,然後挪用Store對象的吸收辦法,便可以從指定的 POP3辦事器中取得郵件數據,並把這些郵件數據封裝到表現郵件的Message對象中。
 
4、實例

public class JavaMail_01 { 
  public static void main(String[] args) throws Exception { 
    Properties props = new Properties(); 
    props.setProperty("mail.smtp.auth", "true"); 
    props.setProperty("mail.transport.protocol", "smtp"); 
     
    Session session = Session.getInstance(props); 
    session.setDebug(true); 
     
    Message msg = new MimeMessage(session); 
    msg.setSubject("這是一個測試法式...."); 
    msg.setText("你好!這是我的第一個javamail法式---陳明"); 
    msg.setFrom(new InternetAddress("******@163.com")); 
 
    Transport transport = session.getTransport(); 
    transport.connect("smtp.163.com", 25, "*******", "********"); 
    transport.sendMessage(msg,new Address[]{new InternetAddress("[email protected]")}); 
 
    System.out.println("郵件發送勝利..."); 
    transport.close(); 
  } 
} 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved