javamail使用完全手冊

來源:互聯網
上載者:User
1,哪裡是開始:
初始環境,安裝好你的j2sdk和你的web伺服器,也就是說你的機器應該能夠運行jsp。
不能??
這裡不管
2,安裝javamail和jaf
JavaMail是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。 支援pop3,imap,smtp.
雖然JavaMail是Sun的API之一,但它目前還沒有被加在標準的java開發套件中(Java Development Kit),
這就意味著你在使用前必須另外下載JavaMail檔案。除此以外,你還需要有Sun的JavaBeans Activation Framework (JAF)。
JavaBeans Activation Framework的運行很複雜,在這裡簡單的說就是JavaMail的運行必須得依賴於它的支援
去java.sun.com下再兩個zip包(javamail和jaf的)
3,配置
兩個zip解壓到c:(這裡是舉例,你的可能不同)
把javamai的mail.jar和jaf的activation.jar加入到環境變變數中
4,用來發送email的HTML原始碼
<HTML>
     <BODY>
     <FORM action="sendmail.jsp" method="post">
     <TABLE align="center">
      <TR>
       <TD width="50%">
        To:<BR><INPUT name="to" size="25">
       </TD>
       <TD width="50%">
        From:<BR><INPUT name="from" size="25">
       </TD>
      </TR>
      <TR>
       <TD colspan="2">
        Subject:<BR><INPUT name="subject" size="50">
       </TD>
      </TR>
      <TR>
       <TD colspan="2">
        <P>Message:<BR><TEXTAREA name="text" rows=25 cols=85></TEXTAREA></P>
       </TD>
      </TR>
     </TABLE>
     <INPUT type="submit" name="cb_submit" value=" Send ">
     <INPUT type="reset" name="cb_reset" value=" Clear ">
    </FORM>
    </BODY>
    </HTML>
5,今天你“發“了沒有
<%@ page
      import=" javax.mail.*, javax.mail.internet.*, javax.activation.*,java.util.*"
      %>
    <html>
    <head>
    <TITLE>JSP meets JavaMail, what a sweet combo.</TITLE>
    </HEAD>
    <BODY>
    <%
     try{
       Properties props = new Properties();
       Session sendMailSession;
       Store store;
       Transport transport;
      sendMailSession = Session.getInstance(props, null);
      props.put("mail.smtp.host", "smtp.jspinsider.com");
      //用你的smtp伺服器代替上面的 < smtp.jspinsider.com >
      Message newMessage = new MimeMessage(sendMailSession);
      newMessage.setFrom(new InternetAddress(request.getParameter("from")));
      newMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(request.getParameter("to")));
      newMessage.setSubject(request.getParameter("subject"));
      newMessage.setSentDate(new Date());
      newMessage.setText(request.getParameter("text"));
      transport = sendMailSession.getTransport("smtp");
      transport.send(newMessage);
       %>
    <P>Your mail has been sent.</P>
    <%
      }
     catch(MessagingException m)
      {
      out.println(m.toString());
      }
    %>
    </BODY>
    </HTML>
解釋解釋:
屬性對象 

JavaMail需要建立一個格式為"mail.smtp.host"的檔案用來發送資訊。 

Properties props = new Properties (); 

props.put("mail.smtp.host", "smtp.jspinsider.com"); 對話對象 

所有的基於JavaMail的程式都至少需要一個或全部的對話目標。 

Session sendMailSession; 

sendMailSession = Session.getInstance(props, null); 

傳輸

郵件的傳輸只有送出或受到兩種狀態。JavaMail將這兩種不同狀態原因為傳輸和儲存。傳輸將送出郵件,而儲存將收取郵件。 

Transport transport; 

transport = sendMailSession.getTransport("smtp"); 

使用JavaMail能為我們節約大量的時間。JavaMail能代替所有的SMTP的工作。 

注意:JavaMail並不能完全的支援所有的郵件發送收取工作。它目前僅支援IMAP、SMTP和POP3,除此以外你只有等待新的JavaMail版本或自己開發協議。 

資訊對象 

資訊對象將把你所發送的郵件真實的反映出來。 

Message newMessage = new MimeMessage(sendMailSession); 

這就是我們所需要的全部四個對象。下一步將是如何將對象加入到JSP中。
3.JavaMail的常用類介紹 

事先說明: 

沒用過JavaMail的人可能看不懂這些介紹,不過不要緊,後面的文章有具體的執行個體,到時也可倒回來查看這些類的用法. 

(1) javax.mail.Properties類 
  JavaMail需要Properties來建立一個session對象。它將尋找字串"mail.smtp.host",屬性值就是發送郵件的主機. 

用法: 
 Properties props = new Properties (); 
   props.put("mail.smtp.host", "smtp.163.com");//可以換上你的smtp主機名稱。 

(2) javax.mail.Session類 
  這個Session類代表JavaMail 中的一個郵件session. 每一個基於 JavaMail的應用程式至少有一個session但是可以有任意多的session。 在這個例子中, Session對象需要知道用來處理郵件的SMTP 伺服器。 

用法: 
   Session sendMailSession; 
   sendMailSession = Session.getInstance(props, null); 

(3) javax.mail.Transport類 
  郵件是既可以被發送也可以被受到。JavaMail使用了兩個不同的類來完成這兩個功能:Transport 和Store. Transport 是用來發送資訊的,而Store用來收信。對於這的教程我們只需要用到Transport對象。 

用法: 
Transport transport; 
  transport = sendMailSession.getTransport("smtp"); 

  用JavaMail Session對象的getTransport 方法來初始化Transport。傳過去的字串申明了對象所要使用的協議,如"smtp"。這將為我們省了很多時間。因為JavaMail以境內建了很多協議的實現方法。 

 注意: JavaMail並不是絕對支援每一個協議,目前支援IMAP、 SMTP和 POP3. 

(4) javax.mail.MimeMessage類 
  Message對象將儲存我們實際發送的電子郵件資訊,Message對象被作為一個MimeMessage對象來建立並且需要知道應當選擇哪一個JavaMail session。 

  用法: 
Message newMessage = new MimeMessage(sendMailSession); 

(5) javax.mail.InternetAddress類 
一旦您建立了 Session 和 Message,並將內容填入訊息後,就可以用Address確定信件地址了。和 Message 一樣,Address 也是個抽象類別。您用的是Javax.mail.internet.InternetAddress 類. 

用法: 
InternetAddress from=new InternetAddress("xxf@cafe.com"); 

(6) javax.mail.Store類 
Store類實現特定郵件協議上的讀、寫、監視、尋找等操作。通過Javax.mail.Store類可以訪問Javax.mail.Folder類。 

用法: 
Store store=s.getSorte("pop3");//s為一個郵件會話 
store.connect(popserver,username,password);//通過你提供的pop地址,使用者名稱和密碼登入你的郵箱 

(7) javax.mail.Folder類 
Folder類用於分級組織郵件,並提供照Javax.mail.Message格式訪問email的能力。 

用法: 
Folder folder=store.getFolder("INBOX"); 
folder.open(Folder.READ_ONLY); 

(8) javax.mail.Internet.MimeMultpart 
一般儲存電子郵件內容的容器是Multipart抽象類別,它定義了增加和刪除及獲得電子郵件不同部分內容的方法.由於Multipart是抽象類別,我們必須為它使用一個具體的子類,JavaMail API提供javax.mail.Internet.MimeMultpart類來使用MimeMessage對象. 

用法: 
MimeMultipart multipart=new MimeMultipart(); 

注:我們使用MimeMultipart對象的一個方法是addBodyPart(),它在我們的電子郵件內容裡添加BodyPart(BodyPart類在下面緊接著要介紹)對象.訊息可以有很多部分,一個BodyPart可以代表一個部分. 

(9) javax.mail.Internet.MimeBodyPart類 

MimeBodyPart是BodyPart具體用於mimeMessage的一個子類. 
MimeBodyPart對象代表一個MimeMessage對象內容的一部分.每個MimeBodyPart被認為有兩部分: 
⊙一個MIME類型 
⊙匹配這個類型的內容 

用法: 
MimeBodyPart mdp=new MimeBodyPart(); 
String text="Hello JavaMail!"; 
mdp.setContent(text,"text/plain");//定義MIME類型為text/plain,並設定MimeBodyPart的內容. 

(10) javax.activation.DataHandler類(包含在JAF中) 
JavaMail API不限制資訊只為文本,任何形式的資訊都可能作繭自縛MimeMessage的一部分.除了文本資訊,作為檔案附件包含在電子郵件資訊的一部分是很普遍的.JavaMail API通過使用DataHandler對象,提供一個允許我們包含非文本BodyPart對象的簡便方法. 

用法: 
DataHandler dh=new DataHandler(text,type); 
mdp.setDatahandler(dh);//mdp是一個MimeBodyPart對象 

(11) javax.activation.FileDataSource類(包含在JAF中) 
一個FileDataSource對象可以表示本地檔案和伺服器可以直接存取的資源.一個本地檔案可以通過建立一個新的MimeBodyPart對象附在一個mimeMessage對象上. 

用法: 
MimeMultipart mm=new MimeMultipart(); 
MimeBodyPart mdp=new MimeBodyPart(); 
FileDataSource fds=new FileDataSource("c:/exam.txt"); 
mdp.setDataHandler(new DataHandler(fds)); //設定資料來源 
mm.addBodyPart(mdp); //為當前訊息MimeMultipart對象增加MimeBodyPart 

(12) javax.activation.URLDataSource類(包含在JAF中) 
遠端資源,URL不會指向它們,由一個URLDataSource對象表示.一個遠端資源可以通過建立一個新mimeBodyPart對象附在一個mimeMessage對象上(同FileDataSource差不多). 

用法: 
與FileDataSource唯一不同的是資料來源的設定: 
URLDataSource uds=new URLDataSource("http://www.cnjsp.com/logo.gif") 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.