隨筆-51  評論-14  文章-0  trackbacks-0

           

          package org.hank.mail;

          import java.util.Properties;

          import javax.activation.DataHandler;
          import javax.activation.FileDataSource;
          import javax.mail.Address;
          import javax.mail.BodyPart;
          import javax.mail.Message;
          import javax.mail.Multipart;
          import javax.mail.Session;
          import javax.mail.Transport;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeBodyPart;
          import javax.mail.internet.MimeMessage;
          import javax.mail.internet.MimeMultipart;

          public class Mail {
           
          //  21-30行把本程序所用變量進(jìn)行定義。 具體在main中對它們賦植。
           private MimeMessage mimeMsg; // MIME郵件對象
           private Session session; // 郵件會(huì)話對象
           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 Mail(String smtp)
           {
             setSmtpHost(smtp);
             createMimeMessage();
           }
           
           
          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ī)
           }
           
           
          public boolean createMimeMessage()
           {
             
          try {
              System.out.println(
          "準(zhǔn)備獲取郵件會(huì)話對象!");
              session 
          = Session.getDefaultInstance(props, null); // 獲得郵件會(huì)話對象
             }
             
          catch (Exception e)
             {
              System.err.println(
          "獲取郵件會(huì)話對象時(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(); // mp 一個(gè)multipart對象
              
          // Multipart is a container that holds multiple body parts.
              return true;
             }
             
          catch (Exception e)
             {
              System.err.println(
          "創(chuàng)建MIME郵件對象失敗!" + e);
              
          return false;
             }
           }

           
          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");
              }
           }
           
           
          public void setNamePass(String name, String pass)
           {
             System.out.println(
          "程序得到用戶名與密碼");
             username 
          = name;
             password 
          = pass;
           }
           
           
          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;
              }
           }
           
           
          public boolean setBody(String mailBody)
           {
             
          try
             {
              System.out.println(
          "設(shè)置郵件體格式");
              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;
             }
           }
           
          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;
              }
           }
           
           
          public boolean setFrom(String from) {
              System.out.println(
          "設(shè)置發(fā)信人!");
              
          try {
               mimeMsg.setFrom(
          new InternetAddress(from)); // 設(shè)置發(fā)信人
               return true;
              }
              
          catch (Exception e)
              {
               
          return false;
              }
           }
           
           
          public boolean setTo(String to)
           {
             System.out.println(
          "設(shè)置收信人");
             
          if (to == null)
              
          return false;
             
          try
             {
              mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
                .parse(to));
              
          return true;
             }
             
          catch (Exception e)
             {
              
          return false;
             }
           }

           
          public boolean setCopyTo(String copyto)
           {
             System.out.println(
          "發(fā)送附件到");
             
          if (copyto == null)
              
          return false;
             
          try {
              mimeMsg.setRecipients(Message.RecipientType.CC,
                (Address[]) InternetAddress.parse(copyto));
              
          return true;
             }
             
          catch (Exception e)
             {
              
          return false;
             }
           }

           
          public boolean sendout()
           {
             
          try
             {
              mimeMsg.setContent(mp);
              mimeMsg.saveChanges();
              System.out.println(
          "正在發(fā)送郵件.");
              Session mailSession 
          = Session.getInstance(props, null);
              Transport transport 
          = mailSession.getTransport("smtp"); // ???
              transport.connect((String) props.get("mail.smtp.host"), username,
                password);
              transport.sendMessage(mimeMsg, mimeMsg
                .getRecipients(Message.RecipientType.TO));
              
          // transport.send(mimeMsg);
              System.out.println("發(fā)送郵件成功!");
              transport.close();
              
          return true;
             }
             
          catch (Exception e)
             {
              System.err.println(
          "郵件發(fā)送失敗!" + e);
              
          return false;
             }
           }

           
          public static void main(String[] args)
           {
             String mailbody 
          = "http://www.laabc.com 用戶郵件注冊測試 <font color=red>歡迎光臨</font> <a href=\"http://www.laabc.com\">啦ABC</a>";
             Mail themail = new Mail("smtp.163.com");
             themail.setNeedAuth(
          true);
             
          if (themail.setSubject("laabc.com郵件測試"== false)
              
          return;
             
          //郵件內(nèi)容 支持html 如 <font color=red>歡迎光臨</font> <a href=\"http://www.laabc.com\">啦ABC</a>
             if (themail.setBody(mailbody) == false)
              
          return;
             
          //收件人郵箱
             if (themail.setTo("aaa@163.com"== false)
              
          return;
             
          //發(fā)件人郵箱
             if (themail.setFrom("bbb@163.com"== false)
              
          return;
             
          //設(shè)置附件
             
          //if (themail.addFileAffix("#######") == false)
              
          //return; // 附件在本地機(jī)子上的絕對路徑
             
          //以下帳號(hào)信息為發(fā)件人郵箱
             themail.setNamePass("用戶名""密碼"); // 用戶名與密碼
             if (themail.sendout() == false)
              
          return;
           }
           
          }

          posted on 2008-04-30 13:19 Hank1026 閱讀(137) 評論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 深泽县| 额济纳旗| 格尔木市| 辉南县| 青冈县| 无为县| 永登县| 德安县| 拉孜县| 朝阳市| 扎鲁特旗| 巫溪县| 肇庆市| 子洲县| 临沧市| 本溪| 班玛县| 任丘市| 拜泉县| 天祝| 剑川县| 新安县| 于都县| 马公市| 年辖:市辖区| 喀喇沁旗| 彰化市| 江门市| 通道| 昌乐县| 敦化市| 钦州市| 三都| 遂昌县| 邓州市| 丁青县| 收藏| 山西省| 双辽市| 德化县| 黎川县|