郵件組件JavaMail

一、普通郵件

  • 引入jar文件
        activation.jar    【如果使用jdk1.6或以上版本,可以不用這個jar文件】
        mail.jar        【郵件發送核心包】
  • 代碼
        // 郵件參數
        Properties prop = new Properties();
        prop.put("mail.transport.protocol", "smtp");    // 指定協議
        prop.put("mail.smtp.host", "localhost");        // 主機
        prop.put("mail.smtp.port", 25);                    // 端口
        prop.put("mail.smtp.auth", "true");                // 用戶密碼認證
        prop.put("mail.debug", "true");                    // 調試模式
        // 創建一個郵件的會話
        Session session = Session.getDefaultInstance(prop);
        // 創建郵件體對象(整封郵件對象)
        MimeMessage message = new MimeMessage(session);
        // 設置郵件體參數
        // 標題
        message.setSubject("我的第一封郵件");
        // 郵件發送時間
        message.setSentDate(new Date());
        // 發件人
        message.setSender(new InternetAddress("[email protected]"));
        // 接收人
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        // 內容
        message.setText("你好,已經發送成功!正文....");    // 簡單純文本郵件
        message.saveChanges();   // 保存郵件(可選)
        // 發送
        Transport trans = session.getTransport();
        trans.connect("zhangsan", "888");
        // 發送郵件
        trans.sendMessage(message, message.getAllRecipients());
        trans.close();

二、帶圖片的郵件

  • 引入jar文件
        略
  • 代碼
        // 初始化參數
        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");        // 主機
            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 {
            // 創建郵件會話
            Session session = Session.getDefaultInstance(prop);
            // 創建郵件對象
            MimeMessage message = new MimeMessage(session);
            // 設置參數:標題、發件人、收件人、發送時間、內容
            message.setSubject("帶圖片郵件");
            message.setSender(sendMan);
            message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
            message.setSentDate(new Date());
            /***************設置郵件內容: 多功能用戶郵件 (related)*******************/
            // 構建一個多功能郵件塊 related
            MimeMultipart related = new MimeMultipart("related");
            // 構建多功能郵件塊內容
            MimeBodyPart content = new MimeBodyPart();
            MimeBodyPart resource = new MimeBodyPart();
            // 設置具體內容: 資源(圖片)
            String filePath = this.getClass().getResource("8.jpg").getPath();
            DataSource ds = new FileDataSource(new File(filePath));
            DataHandler handler = new DataHandler(ds);
            resource.setDataHandler(handler);
            resource.setContentID("8.jpg");   // 設置資源名稱,給外鍵引用。
            // 設置具體內容: 文本
            content.setContent("<img src='cid:8.jpg'/> 這是帶圖片的郵件!", "text/html;charset=UTF-8");
            related.addBodyPart(content);
            related.addBodyPart(resource);
            /******* 把構建的複雜郵件快,添加到郵件中********/
            message.setContent(related);
            // 發送
            Transport trans = session.getTransport();
            trans.connect("zhangsan", "888");
            trans.sendMessage(message, message.getAllRecipients());
            trans.close();
        }

三、帶附件的郵件

  • 引入jar文件
        略
  • 代碼
        // 創建郵件會話
        Session session = Session.getDefaultInstance(prop);
        // 創建郵件對象
        MimeMessage message = new MimeMessage(session);
        // 設置參數:標題、發件人、收件人、發送時間、內容
        message.setSubject("帶圖片郵件");
        message.setSender(sendMan);
        message.setRecipient(RecipientType.TO, new InternetAddress("[email protected]"));
        message.setSentDate(new Date());
        /*
         * 帶附件(圖片)郵件開發
         */
        // 構建一個總的郵件塊 mixed
        MimeMultipart mixed = new MimeMultipart("mixed");
        // 總郵件快,設置到郵件對象中。
        message.setContent(mixed);
        // 附件
        MimeBodyPart bodyPart = new MimeBodyPart();
        // 設置到總郵件塊
        mixed.addBodyPart(bodyPart);
        /******附件********/
        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);
        bodyPart.setDataHandler(attr_handler);
        bodyPart.setFileName("a.docx");
        // 發送
        Transport trans = session.getTransport();
        trans.connect("zhangsan", "888");
        trans.sendMessage(message, message.getAllRecipients());
        trans.close();
  • 注意
        如果是web項目,因爲javaee自帶的有郵件功能,可能存在問題!
            我們要用自己的mail.jar文件功能!需要刪除javaee中mail包!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章