使用JavaMail的Java郵件發送

簡介:

當今時代,電子郵件在各大網站都是非常常見且應用非常的廣泛,比喻在網站註冊一個賬號後,系統自動發送一個激活郵件,點擊鏈接發送請求才能登錄,以及通過郵件找回密碼等等。本文將介紹使用java來發送郵件。

一、電子郵件協議

常用的電子郵件協議有SMTPPOP3IMAP4,它們都屬TCP/IP協議簇,默認狀態下,分別通過TCP端口25、110和143
建立連接。下面分別對其進行簡單介紹


SMTP協議:

SMTP的全稱是“Simple Mail Transfer Protocol”,即簡單郵件傳輸協議。它是一組用於從源地址到目的地址傳輸郵件的規範,
通過它來控制郵件的中轉方式。SMTP 協議屬於TCP/IP協議簇,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。SMTP
服務器就是遵循SMTP協議的發送郵件服務器。SMTP認證,簡單地說就是要求必須在提供了賬戶名和密碼之後纔可以登錄 SMTP
服務器,這就使得那些垃圾郵件的散播者無可乘之機。增加 SMTP 認證的目的是爲了使用戶避免受到垃圾郵件的侵擾。

POP協議:

POP郵局協議負責從郵件服務器中檢索電子郵件。主要作用是:從郵件服務器中檢索郵件並從服務器中刪除這個郵件;從郵
務器中檢索郵件但不刪除它;不檢索郵件,只是詢問是否有新郵件到達。POP協議支持多用戶互聯網郵件擴展,後者允許用戶在
電子郵件上附帶二進制文件,如文字處理文件和電子表格文件等,實際上這樣就可以傳輸任何格式的文件了,包括圖片和聲音文件
等。


IMAP協議:

訪問協議(IMAP)並且優於POP的新協議。和POP一樣,IMAP也能下載郵件、從服務器中刪除郵件或詢問是否有新郵件,但
IMAP克服了POP的一些缺點。例如,
它可以決定客戶機請求郵件服務器提交所收到郵件的方式,請求郵件服務器只下載所選中的郵件而不是全部郵件。

實例:

public static void sendMail(String to,String msg) throws Exception{


        Properties prop = new Properties(); /** 創建連接對象,連接到郵件服務器**/
        prop.setProperty("mail.host","smtp.163.com");/** 設置郵箱主機名 **/
        prop.setProperty("mail.transport.protocol","smtp");/** 發送郵件協議名 **/
        prop.setProperty("mail.smtp.auth","true");/** 發送服務器需要身份認證 **/
        prop.setProperty("mail.smtp.timeou","3000");/** 發送郵件超時時間 **/
   
        Session session = Session.getInstance(prop, passwordAuthentication());
        Message message = new MimeMessage(session);/** 創建郵件對象 */
        message.setFrom(new InternetAddress(USER_NAME)); /**  郵件發送者 */
        message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(to)); /**  郵件接受者 */

//        message.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress(to)); /**  郵件接受者(抄送) */
//        message.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress(to)); /**  郵件接受者(密送) */
        message.setSentDate(new Date()); /**設置顯示的發件時間*/

        message.setSubject("歡迎註冊battle<a href=''>點擊激活</a>");
        message.setText("激動地址:http://www.test.com/test?test=123");
        //message.setContent("<h1>請點擊鏈接進行激活<a href='localhost:8080/test'>點擊激活</a></h1>", "text/html;charset=utf-8");
        Transport.send(message);

    }

    private static Authenticator passwordAuthentication() {
        return new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                 return new PasswordAuthentication(USER_NAME, PASS_WORD);
            }
        };
    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章