細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

          用Javamail發送郵件

           

          在java版經常看到有人問如何用javamail發送郵件?如何接收郵件?如何訪問多個文件夾等。問題零散,而歷史的回復早已經淹沒在問題的海洋之中。

          本人之前所做過一個java項目,其中包含有WebMail功能,當初為用java實現而對javamail摸索了一段時間,總算有點收獲。看到論壇中的經常有此方面的問題,因此把我的一些經驗帖出來,希望對大家有些幫助。

          此篇僅介紹用javamail實現發送郵件功能,其中涉及smtp認證,郵件附件發送,及HTML內容郵件等。
          其它有關多郵箱的實現,接收POP3郵件及IMAP等內容,將在后續文章中介紹。

          如下程序需要:javamail,JAF包,j2ee.jar包含了上述兩個包,建議大家安裝J2SDKEE或直接拷貝j2ee.jar,將其添加到jbuilder的library中,或系統ClassPath中

          */

           

          package com.me.util.mail;

          /**
           * @author Zhangkun aistill@msn.com
           * @version 1.0
           */

          import java.util.*;
          import javax.mail.*;
          import javax.mail.internet.*;
          import java.util.Date;
          import javax.activation.*;
          import java.io.*;
          import com.me.util.*;

          public class sendMail {

            private MimeMessage mimeMsg;  //MIME郵件對象

            private Session session;      //郵件會話對象
            private Properties props;     //系統屬性
            private boolean needAuth = false;  //smtp是否需要認證

            private String username = "";  //smtp認證用戶名和密碼
            private String password = "";

            private Multipart mp;    //Multipart對象,郵件內容,標題,附件等內容均添加到其中后再生成MimeMessage對象

           

           /**
            *
            */
            public sendMail() {
              setSmtpHost(getConfig.mailHost);//如果沒有指定郵件服務器,就從getConfig類中獲取
              createMimeMessage();
            }

            public sendMail(String smtp){
              setSmtpHost(smtp);
              createMimeMessage();
            }

           

           /**
            * @param hostName String
            */
            public void setSmtpHost(String hostName) {
              System.out.println("設置系統屬性:mail.smtp.host = "+hostName);
              if(props == null)props = System.getProperties();         //獲得系統屬性對象

              props.put("mail.smtp.host",hostName);                 //設置SMTP主機
            }


           /**
            * @return boolean
            */
            public boolean createMimeMessage()
            {
              try{
                System.out.println("準備獲取郵件會話對象!";
                session = Session.getDefaultInstance(props,null);   //獲得郵件會話對象
              }
              catch(Exception e){
                System.err.println("獲取郵件會話對象時發生錯誤!"+e);
                return false;
              }

              System.out.println("準備創建MIME郵件對象!";
              try{
                mimeMsg = new MimeMessage(session);                 //創建MIME郵件對象
                mp = new MimeMultipart();

                return true;
              }
              catch(Exception e){
                System.err.println("創建MIME郵件對象失敗!"+e);
                return false;
              }
            }

           

           /**
            * @param need boolean
            */
            public void setNeedAuth(boolean need) {
              System.out.println("設置smtp身份認證:mail.smtp.auth = "+need);
              if(props == null)props = System.getProperties();

              if(need){
                props.put("mail.smtp.auth","true";
              }else{
                props.put("mail.smtp.auth","false";
              }
            }

           

           /**
            * @param name String
            * @param pass String
            */
            public void setNamePass(String name,String pass) {
              username = name;
              password = pass;
            }


           /**
            * @param mailSubject String
            * @return boolean
            */
            public boolean setSubject(String mailSubject) {
              System.out.println("設置郵件主題!";
              try{
                mimeMsg.setSubject(mailSubject);
                return true;
              }
              catch(Exception e) {
                System.err.println("設置郵件主題發生錯誤!";
                return false;
              }
            }


           
           /**
            * @param mailBody String
            */
            public boolean setBody(String mailBody) {
              try{
                BodyPart bp = new MimeBodyPart();
                bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312";
                mp.addBodyPart(bp);

                return true;
              }
              catch(Exception e){
                System.err.println("設置郵件正文時發生錯誤!"+e);
                return false;
              }
            }


           /**
            * @param name String
            * @param pass String
            */
            public boolean addFileAffix(String filename) {

           System.out.println("增加郵件附件:"+filename);

           try{
                BodyPart bp = new MimeBodyPart();
                FileDataSource fileds = new FileDataSource(filename);
                bp.setDataHandler(new DataHandler(fileds));
                bp.setFileName(fileds.getName());

                mp.addBodyPart(bp);

                return true;
              }
              catch(Exception e){
                System.err.println("增加郵件附件:"+filename+"發生錯誤!"+e);
                return false;
              }
            }

           

           /**

          posted on 2007-05-06 12:23 張金鵬 閱讀(79) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 红河县| 井陉县| 武邑县| 扶沟县| 长宁县| 安陆市| 汶川县| 油尖旺区| 米易县| 克山县| 宁晋县| 巍山| 鄂伦春自治旗| 霍邱县| 沈丘县| 大埔县| 长垣县| 肇东市| 浠水县| 淳安县| 阿鲁科尔沁旗| 铁岭县| 新平| 电白县| 四平市| 锦屏县| 江都市| 于田县| 九江市| 吴桥县| 清远市| 罗城| 横峰县| 腾冲县| 汽车| 吉安市| 河曲县| 绥化市| 邓州市| 西峡县| 登封市|