細(xì)心!用心!耐心!

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

          BlogJava 聯(lián)系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks

          用Javamail發(fā)送郵件

           

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

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

          此篇僅介紹用javamail實(shí)現(xiàn)發(fā)送郵件功能,其中涉及smtp認(rèn)證,郵件附件發(fā)送,及HTML內(nèi)容郵件等。
          其它有關(guān)多郵箱的實(shí)現(xiàn),接收POP3郵件及IMAP等內(nèi)容,將在后續(xù)文章中介紹。

          如下程序需要:javamail,JAF包,j2ee.jar包含了上述兩個(gè)包,建議大家安裝J2SDKEE或直接拷貝j2ee.jar,將其添加到j(luò)builder的library中,或系統(tǒng)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;     //系統(tǒng)屬性
            private boolean needAuth = false;  //smtp是否需要認(rèn)證

            private String username = "";  //smtp認(rèn)證用戶名和密碼
            private String password = "";

            private Multipart mp;    //Multipart對象,郵件內(nèi)容,標(biāo)題,附件等內(nèi)容均添加到其中后再生成MimeMessage對象

           

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

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

           

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

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


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

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

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

           

           /**
            * @param need boolean
            */
            public void setNeedAuth(boolean need) {
              System.out.println("設(shè)置smtp身份認(rèn)證: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("設(shè)置郵件主題!";
              try{
                mimeMsg.setSubject(mailSubject);
                return true;
              }
              catch(Exception e) {
                System.err.println("設(shè)置郵件主題發(fā)生錯(cuò)誤!";
                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("設(shè)置郵件正文時(shí)發(fā)生錯(cuò)誤!"+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+"發(fā)生錯(cuò)誤!"+e);
                return false;
              }
            }

           

           /**

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 罗田县| 九寨沟县| 高邑县| 陇南市| 满洲里市| 宁武县| 雷波县| 水富县| 昭觉县| 宜城市| 上高县| 鄂托克旗| 清苑县| 绥芬河市| 涿州市| 蕲春县| 沙河市| 新安县| 新竹市| 东至县| 德钦县| 和静县| 余姚市| 疏勒县| 涿鹿县| 新野县| 伊宁市| 乌拉特前旗| 旬阳县| 齐河县| 凯里市| 壤塘县| 开江县| 新龙县| 崇仁县| 法库县| 永清县| 巫溪县| 兴国县| 庄河市| 拉孜县|