JavaMail郵件開發

開發中,郵件的應用?
註冊,填寫生日; 後期系統會自動發送生日祝賀
發貨,發貨提醒!郵件提醒!
郵件:
1. 發郵件;【程序中如何發郵件!】
2. 收郵件;【很多客戶端工具, foxmail 】

郵件開發準備:
準備工作, 環境搭建:
1. 搭建一個郵件服務器
2. 新建郵箱賬號
3. 安裝foxmail
配置郵件發送服務器(smtp): localhost 25
郵件接收服務器(pop3): localhost 110
再新建賬號,就可以接收郵件了!

JavaMail開發,先引入jar文件:
activation.jar 【如果使用jdk1.6或以上版本,可以不用這個jar文件】
mail.jar 【郵件發送核心包】

普通郵件

**
 * 1. 發送一封普通郵件
 *
 */
public class App_SendMail {

    @Test
    public void testSend() throws Exception {

        //0. 郵件參數
        Properties prop = new Properties();
        prop.put("mail.transport.protocol", "smtp");    // 指定協議
        prop.put("mail.smtp.host", "localhost");        // 主機   stmp.qq.com
        prop.put("mail.smtp.port", 25);                 // 端口
        prop.put("mail.smtp.auth", "true");             // 用戶密碼認證
        prop.put("mail.debug", "true");                 // 調試模式

        //1. 創建一個郵件的會話
        Session session = Session.getDefaultInstance(prop);
        //2. 創建郵件體對象 (整封郵件對象)
        MimeMessage message = new MimeMessage(session);
        //3. 設置郵件體參數: 
        //3.1 標題
        message.setSubject("我的第一封郵件 ");
        //3.2 郵件發送時間
        message.setSentDate(new Date());
        //3.3 發件人
        message.setSender(new InternetAddress("[email protected]"));
        //3.4 接收人
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        //3.5內容
        message.setText("你好,已經發送成功!  正文....");  // 簡單純文本郵件
        message.saveChanges();   // 保存郵件(可選)

        //4. 發送
        Transport trans = session.getTransport();
        trans.connect("zhangsan", "888");
        // 發送郵件
        trans.sendMessage(message, message.getAllRecipients());
        trans.close();
    }
}

郵件開發之帶圖片

/**
 * 帶圖片資源的郵件
 *
 */
public class App_2SendWithImg {

    // 初始化參數
    private static Properties prop;
    // 發件人
    private static InternetAddress sendMan = null;
    static {
        prop = new Properties();
        prop.put("mail.transport.protocol", "smtp");    // 指定協議
        prop.put("mail.smtp.host", "localhost");        // 主機   stmp.qq.com
        prop.put("mail.smtp.port", 25);                 // 端口
        prop.put("mail.smtp.auth", "true");             // 用戶密碼認證
        prop.put("mail.debug", "true");                 // 調試模式
        try {
            sendMan = new InternetAddress("[email protected]");
        } catch (AddressException e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void testSend() throws Exception {
        // 1. 創建郵件會話
        Session session = Session.getDefaultInstance(prop);
        // 2. 創建郵件對象
        MimeMessage message = new MimeMessage(session);
        // 3. 設置參數:標題、發件人、收件人、發送時間、內容
        message.setSubject("帶圖片郵件");
        message.setSender(sendMan);
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        message.setSentDate(new Date());

        /***************設置郵件內容: 多功能用戶郵件 (related)*******************/
        // 4.1 構建一個多功能郵件塊
        MimeMultipart related = new MimeMultipart("related");
        // 4.2 構建多功能郵件塊內容 = 左側文本 + 右側圖片資源
        MimeBodyPart content = new MimeBodyPart();
        MimeBodyPart resource = new MimeBodyPart();

        // 設置具體內容: a.資源(圖片)
        String filePath = App_2SendWithImg.class.getResource("8.jpg").getPath();
        DataSource ds = new FileDataSource(new File(filePath));
        DataHandler handler = new DataHandler(ds);
        resource.setDataHandler(handler);
        resource.setContentID("8.jpg");   // 設置資源名稱,給外鍵引用

        // 設置具體內容: b.文本
        content.setContent("<img src='cid:8.jpg'/>  好哈哈!", "text/html;charset=UTF-8");

        related.addBodyPart(content);
        related.addBodyPart(resource);

        /*******4.3 把構建的複雜郵件快,添加到郵件中********/
        message.setContent(related);


        // 5. 發送
        Transport trans = session.getTransport();
        trans.connect("zhangsan", "888");
        trans.sendMessage(message, message.getAllRecipients());
        trans.close();
    }
}

郵件開發之帶圖片 + 附件

/**
 * 3. 帶圖片資源以及附件的郵件
 * @author Jie.Yuan
 *
 */
public class App_3ImgAndAtta {

    // 初始化參數
    private static Properties prop;
    // 發件人
    private static InternetAddress sendMan = null;
    static {
        prop = new Properties();
        prop.put("mail.transport.protocol", "smtp");    // 指定協議
        prop.put("mail.smtp.host", "localhost");        // 主機   stmp.qq.com
        prop.put("mail.smtp.port", 25);                 // 端口
        prop.put("mail.smtp.auth", "true");             // 用戶密碼認證
        prop.put("mail.debug", "true");                 // 調試模式
        try {
            sendMan = new InternetAddress("[email protected]");
        } catch (AddressException e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void testSend() throws Exception {
        // 1. 創建郵件會話
        Session session = Session.getDefaultInstance(prop);
        // 2. 創建郵件對象
        MimeMessage message = new MimeMessage(session);
        // 3. 設置參數:標題、發件人、收件人、發送時間、內容
        message.setSubject("帶圖片郵件");
        message.setSender(sendMan);
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        message.setSentDate(new Date());

        /*
         * 帶附件(圖片)郵件開發
         */
        // 構建一個總的郵件塊
        MimeMultipart mixed = new MimeMultipart("mixed");
        // ---> 總郵件快,設置到郵件對象中
        message.setContent(mixed);
        // 左側: (文本+圖片資源)
        MimeBodyPart left = new MimeBodyPart();
        // 右側: 附件
        MimeBodyPart right = new MimeBodyPart();
        // 設置到總郵件塊
        mixed.addBodyPart(left);
        mixed.addBodyPart(right);

        /******附件********/
        String attr_path = this.getClass().getResource("a.docx").getPath();
        DataSource attr_ds = new FileDataSource(new File(attr_path));
        DataHandler attr_handler = new DataHandler(attr_ds);
        right.setDataHandler(attr_handler);
        right.setFileName("a.docx");


        /***************設置郵件內容: 多功能用戶郵件 (related)*******************/
        // 4.1 構建一個多功能郵件塊
        MimeMultipart related = new MimeMultipart("related");
        // ----> 設置到總郵件快的左側中
        left.setContent(related);

        // 4.2 構建多功能郵件塊內容 = 左側文本 + 右側圖片資源
        MimeBodyPart content = new MimeBodyPart();
        MimeBodyPart resource = new MimeBodyPart();

        // 設置具體內容: a.資源(圖片)
        String filePath = App_3ImgAndAtta.class.getResource("8.jpg").getPath();
        DataSource ds = new FileDataSource(new File(filePath));
        DataHandler handler = new DataHandler(ds);
        resource.setDataHandler(handler);
        resource.setContentID("8.jpg");   // 設置資源名稱,給外鍵引用

        // 設置具體內容: b.文本
        content.setContent("<img src='cid:8.jpg'/>  好哈哈!", "text/html;charset=UTF-8");

        related.addBodyPart(content);
        related.addBodyPart(resource);



        // 5. 發送
        Transport trans = session.getTransport();
        trans.connect("zhangsan", "888");
        trans.sendMessage(message, message.getAllRecipients());
        trans.close();
    }
}

注意:

如果是web項目,因爲javaee自帶的有郵件功能,可能存在問題!
我們要用自己的mail.jar文件功能! 需要刪除javaee中mail包!

發佈了53 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章