本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-230  文章-8  trackbacks-0

          package pg.system;

          /**
           * 
          @author pdw
           *
           * TODO 發送郵件!
           * 
           
          */
          import java.util.*;
          import javax.mail.*;
          import javax.mail.internet.*;
          import javax.activation.*;
          import java.security.spec.X509EncodedKeySpec;

          public class SendMail {
              
          public MimeMessage mimeMsg;  //要發送的email信息
              private Session session;
              
          private Properties props;
              
          private boolean needAuth=false;
              
              
          private String username="";
              
          private String password="";
              
              
          private Multipart mp;  //存放郵件的title 內容和附件
              
              
          public SendMail(String stmp){
                  setSmtpHost(stmp);
                  createMimeMessage();
              }
              
          /**
               * 
               * 
          @param hostName
               
          */
              
          public void setSmtpHost(String hostName){
                  System.out.println(
          "mail.stmp.host= "+hostName);
                  
          if(props==null){
                      props
          =System.getProperties();
                  }
                  props.put(
          "mail.smtp.host",hostName);
              }
              
              
          public boolean createMimeMessage(){
                  
          try{
                      System.out.println(
          "Session begin-----------");
                      session
          =Session.getInstance(props,null);
                  }
          catch(Exception e){
                      System.out.println(
          "Session.getInstance faild!"+e);
                      
          return false;
                  }
                  System.out.println(
          "MimeMEssage begin---------!");
                  
          try{
                      mimeMsg
          =new MimeMessage(session);
                      mp
          =new MimeMultipart();
                      
          return true;
                  }
          catch(Exception e){
                      System.out.println(
          "MimeMessage fiald! "+e.toString());
                      
          return false;
                  }
              }
              
          /**
               * 
               * 
          @param need
               
          */
              
          public void setNeedAuth(boolean need){
                  System.out.println(
          ":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
               * 
          @param pass
               
          */
              
          public void setNamePass(String name,String pass){
                  username
          =name;
                  password
          =pass;
              }
              
          /**
               * 
               * 
          @param mailSubject
               * 
          @return boolean
               
          */
              
          public boolean setSubject(String mailSubject){
                  System.out.println(
          "set title begin.");
                  
          try{
                      
          if(!mailSubject.equals("")&&mailSubject!=null){
                          mimeMsg.setSubject(mailSubject);
                      }
                      
          return true;
                  }
          catch(Exception e){
                      System.out.println(
          "set Title faild!");
                      
          return false;
                  }
              }
              
          /**
               *  添加附件..
               * 
          @param filename
               * 
          @return
               
          */
              
          public boolean addFileAffix(String filename){
                  System.out.println(
          "增加附件..");
                  
          if(filename.equals("")||filename==null){
                      
          return false;
                  }
                  String file[];
                  file
          =filename.split(";");
                  System.out.println(
          "你有 "+file.length+" 個附件!");
                  
          try{
                      
          for(int i=0;i<file.length;i++){
                          BodyPart bp
          =new MimeBodyPart();
                          FileDataSource fileds
          =new FileDataSource(file[i]);
                          bp.setDataHandler(
          new DataHandler(fileds));
                          bp.setFileName(fileds.getName());
                          mp.addBodyPart(bp);
                       }
                       
          return true;
                     }
          catch(Exception e){
                       System.err.println(
          "增加附件: "+filename+"--faild!"+e);
                       
          return false;
                  }
             }
              
          /**
               * 
               * 
          @param from
               * 
          @return
               
          */
              
          public boolean setFrom(String from){
                  System.out.println(
          "Set From .");
                  
          try{
                      mimeMsg.setFrom(
          new InternetAddress(from));
                      
          return true;
                  }
          catch(Exception e){
                      
          return false;
                  }
              }
              
          /**
               * 
               * 
          @param to
               * 
          @return
               
          */
              
          public boolean setTo(String to){
                  System.out.println(
          "Set to.");
                  
          if(to==null||to.equals("")){
                      
          return false;
                  }
                  
          try{
                      mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
                      
          return true;
                  }
          catch(Exception e){
                      
          return false;
                  }
              }
              
          public boolean setCopyTo(String copyto){
                  
          if(copyto.equals("")||copyto==null){
                      
          return false;
                  }
                  
          try{
                      String copy[];
                      copy
          =copyto.split(";");
                      
          for(int i=0;i<copy.length;i++){
                          mimeMsg.setRecipients(Message.RecipientType.TO,(Address[])InternetAddress.parse(copy[i]));
                      }
                      
          return true;
                  }
          catch(Exception e){
                      
          return false;
                  }
              }
              
              
              
          /**
               * 設置信的內容!
               * 
          @param mailBody
               * 
          @return boolean
               
          */
              
          public boolean setBody(String mailBody){
                  
          try{
                      BodyPart bp
          =new MimeBodyPart();
                      bp.setContent(
          "<meta http-equiv=Context-Type context=text/html;charset=gb2312>"+mailBody,"text/html;charset=GB2312");
                      mp.addBodyPart(bp);
                      
          return true;
                  }
          catch(Exception e){
                      System.out.println(
          "Set context Faild! "+e);
                      
          return false;
                  }
              }
              
          /**
               * 
               * 
          @param htmlpath
               * 
          @return boolean
               
          */
              
          public boolean setHtml(String htmlpath){
                  
          try{
                      
          if(!htmlpath.equals("")||htmlpath!=null){
                          BodyPart mbp
          =new MimeBodyPart();
                          DataSource ds
          =new FileDataSource(htmlpath);
                          mbp.setDataHandler(
          new DataHandler(ds));
                          mbp.setHeader(
          "Context-ID","meme");
                          mp.addBodyPart(mbp);
                          }
                          
          return true;
                      }
          catch(Exception  e){
                          System.err.println(
          "Set Html Faild!"+e);
                          
          return false;
                      }
                  }
               
          public boolean setOut(){
                   
          try{
                       mimeMsg.setContent(mp);
                       mimeMsg.saveChanges();
                       System.out.println(
          "正在SendMail.");
                       Session mailSession
          =session.getInstance(props,null);
                       Transport tp
          =mailSession.getTransport("smtp");
                       tp.connect((String)props.getProperty(
          "mail.stmp.host"),username,password);
                       tp.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
                       
          //tp.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));
                       System.out.println("Send Mail 成功..");
                       tp.close();
                       
          return true;
                   }
          catch(Exception e){
                       e.printStackTrace();
                       
          return false;
                   }
               }
                 
          }

          測試類]

          package pg.system;


          public class SendMailDemo {

              
          public static void main(String[] args) {
                  SendMail sm
          =new SendMail("mail.ldtec.com");
                  sm.setNamePass(
          "peidewan@ldtec.com","123456");
                  sm.setSubject(
          "測試,測試");
                  sm.setFrom(
          "peidewan@ldtec.com");
                  sm.setTo(
          "pdw2009@yahoo.com.cn");
                  sm.addFileAffix(
          "f:/adsl.txt");
                  StringBuffer bs
          =new StringBuffer();
                  bs.append(
          "裴德萬:\n");
                  bs.append(
          "       測試度奇珍異寶埼地在檌!!!!!!!!!!!");
                  sm.setBody(
          "DFSAAAAAAAAAAAAAAAAA");
                  sm.setNeedAuth(
          true);
                  
          boolean b=sm.setOut();
                  
          if(b){
                      System.out.println(
          "\n郵件發送成功!!!!!");
                  }
                  
          else{
                      System.out.println(
          "郵件發送失敗!!!!");
                  }
              }
          }



          很久以前寫的一個發郵件的例,今天把它貼出來做筆記!!

          gmail郵件收發。
          package test;
          import java.security.Security;
          import java.util.*;

          import javax.mail.*;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeMessage;
          import javax.mail.internet.MimeUtility;

          /**
           * 定時收取新郵件類
           * 
          @author peidw
           *
           
          */
          class ReceiveNewMailTimerTask extends TimerTask{
              
          static Store store=null;
              
          static String username="pdw2009@gmail.com";
              
          static String password="pdw123456";
              
          /**
               * 靜態初始化模塊,只保留一個Store連接
               
          */
              
          static{
                  
          try {
                      connect(username,password);
                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  }
              }
              
              
              
          /**
               * 任務計劃執行方法
               
          */
              @Override
              
          public void run() {
                  
          try{
                      System.out.println(
          "正在讀取郵箱.");
                      printNewMailInfo(getNewMessage(username,password));
                  }
          catch(Exception e){
                      e.printStackTrace();
                  }
                  
              }
              
          private static void connect(String username,String password)throws Exception{
                  Security.addProvider(
          new com.sun.net.ssl.internal.ssl.Provider());   
                  
          final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";   
                  Properties props 
          = System.getProperties();   
                  props.setProperty(
          "mail.pop3.socketFactory.class", SSL_FACTORY);   
                  props.setProperty(
          "mail.pop3.socketFactory.fallback""false");   
                  props.setProperty(
          "mail.pop3.port""995");   
                  props.setProperty(
          "mail.pop3.socketFactory.port""995");   
                  Session session 
          = Session.getDefaultInstance(props, null);   
                  URLName urln 
          = new URLName("pop3""pop.gmail.com"995null,   
                          username, password);   
                  store 
          = session.getStore(urln);   
                  store.connect(); 
              }
              
          /**
               * 讀取新郵件
               * 
          @param username
               * 
          @param password
               * 
          @return
               * 
          @throws Exception
               
          */
              
          public Message[] getNewMessage(String username,String password)throws Exception{
                  
          if(store.isConnected()){
                      connect(username,password);
                  }
                  Folder inbox 
          = store.getFolder("INBOX");   
                  inbox.open(Folder.READ_ONLY);   
                  FetchProfile profile 
          = new FetchProfile();   
                  profile.add(FetchProfile.Item.ENVELOPE);  
                  
                  
          if(inbox.getUnreadMessageCount()>0){
                      
          int fetchcount=inbox.getMessageCount()-inbox.getUnreadMessageCount();
                      
          if(fetchcount==0)return inbox.getMessages();
                      Message[] mesg
          =inbox.getMessages(12); //取取未讀郵件
                      return mesg;
                  }
          else{
                      System.out.println(
          "不存在新郵件..");
                      
          throw new RuntimeException("不存在新郵件");
                  }
              }
              
          /**
               * 打印郵件信息
               * 
          @param message
               * 
          @throws Excepiton
               
          */
              
          public void printNewMailInfo(Message[] message)throws Exception{
                  Message msg
          =null;
                  String text
          =null;
                  
          for(int i=0;i<message.length;i++){
                      msg
          =message[i];
                      text
          =msg.getSubject();
                      
          if(text==null){
                          System.out.println(
          "該郵件沒標準");
                      }
          else if(text.startsWith("=GBK")||text.startsWith("=gb2312")){
                          text
          =MimeUtility.decodeText(text);
                      }
          else{
                          text
          =new String(text.getBytes("gb2312"));
                      }
                      System.out.println(
          "--" + text); 
                  }
              }
          }


          public class GmailReceiveAndSend {
              
              
          public void sendMail()throws Exception{
                  
          //收郵件的連接
                  Security.addProvider(new  com.sun.net.ssl.internal.ssl.Provider());
                  
          final  String  SSL_FACTORY  =  "javax.net.ssl.SSLSocketFactory";
                  Properties  props  
          =  System.getProperties();
                  props.setProperty(
          "mail.smtp.host",  "smtp.gmail.com");
                  props.setProperty(
          "mail.smtp.socketFactory.class",  SSL_FACTORY);
                  props.setProperty(
          "mail.smtp.socketFactory.fallback",  "false");
                  props.setProperty(
          "mail.smtp.port",  "465");
                  props.setProperty(
          "mail.smtp.socketFactory.port",  "465");
                  props.put(
          "mail.smtp.auth",  "true");
                  
          final  String  username  =  "pdw2009";
                  
          final  String  password  =  "pdw123456";
                  Session  session  
          =  Session.getDefaultInstance(props,  new  Authenticator(){
                      
          protected  PasswordAuthentication  getPasswordAuthentication()  {
                                     
          return  new  PasswordAuthentication(username,password );
                   }});
                   Message  msg  
          =  new  MimeMessage(session);

                   msg.setFrom(
          new  InternetAddress("pdw2009"  +  "@gmail.com"));
                   msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(
          "pdw2009@qq.com",false));
                   msg.setSubject(
          "你好");
                   msg.setText(
          "gmail 郵件測試");
                   msg.setSentDate(
          new  Date());
                   Transport.send(msg);
                   System.out.println(
          "Message  sent.");


              }
              
              
              
          public static void main(String[] args)throws Exception{
                  ReceiveNewMailTimerTask task
          =new ReceiveNewMailTimerTask();
                  Timer timer
          =new Timer();
                  
          //timer.schedule(task,2000,1*60*1000);
                  GmailReceiveAndSend gs=new GmailReceiveAndSend();
                  gs.sendMail();
              }
          }
          gmail必須自己手動開通支持郵箱支持pop3功能
          posted on 2007-10-08 22:40 有貓相伴的日子 閱讀(8638) 評論(7)  編輯  收藏 所屬分類: jdk

          評論:
          # re: javax.mail使用例子 2007-10-10 23:11 | 怎么羨慕天空的飛鳥
          這個javamail發送中文附件應該會出現亂碼吧?(推測)  回復  更多評論
            
          # re: javax.mail使用例子 2007-10-11 14:02 | 有貓相伴的日子
          發郵件的代碼我以前測試過了,沒問題  回復  更多評論
            
          # re: javax.mail使用例子 2008-04-01 22:13 | 草包書生
          這個現在對我正好有用  回復  更多評論
            
          # re: javax.mail使用例子[未登錄] 2008-04-25 10:43 | jack
          這樣發送中文你有沒有發送到EXCHANGE SERVER測試過,我寫的郵件發送程序類似,就是中文發出來不對,是亂碼.請指教.  回復  更多評論
            
          # re: javax.mail使用例子 2008-06-12 17:05 |
          請問哪里可以下載到javax.mail包呢?  回復  更多評論
            
          # re: javax.mail使用例子 2009-04-17 15:18 | 奔向災難般的幸福
          CSDN
            回復  更多評論
            
          # re: javax.mail使用例子 2011-08-07 22:39 | 哈哈怪
          請問該如何配置javamail和jfc,我在網上找了好幾種方法但是仍然在import javax.mai.*的時候提示出錯,mupeng@gmail.com,謝謝  回復  更多評論
            
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 乐昌市| 克什克腾旗| 武邑县| 登封市| 南召县| 正定县| 荥经县| 辽阳市| 石渠县| 镇原县| 高密市| 普兰县| 扎赉特旗| 郁南县| 林周县| 云浮市| 大冶市| 金乡县| 连山| 德令哈市| 兰坪| 昌黎县| 佛冈县| 普安县| 德化县| 阜平县| 中江县| 勃利县| 屯门区| 乐安县| 昌江| 公主岭市| 岐山县| 广平县| 兰西县| 龙海市| 汉源县| 荥经县| 大渡口区| 临西县| 融水|