隨筆-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行把本程序所用變量進行定義。 具體在main中對它們賦植。
           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 Mail(String smtp)
           {
             setSmtpHost(smtp);
             createMimeMessage();
           }
           
           
          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主機
           }
           
           
          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(); // mp 一個multipart對象
              
          // Multipart is a container that holds multiple body parts.
              return true;
             }
             
          catch (Exception e)
             {
              System.err.println(
          "創建MIME郵件對象失敗!" + e);
              
          return false;
             }
           }

           
          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");
              }
           }
           
           
          public void setNamePass(String name, String pass)
           {
             System.out.println(
          "程序得到用戶名與密碼");
             username 
          = name;
             password 
          = pass;
           }
           
           
          public boolean setSubject(String mailSubject) {
              System.out.println(
          "設置郵件主題!");
              
          try {
               mimeMsg.setSubject(mailSubject);
               
          return true;
              }
              
          catch (Exception e) {
               System.err.println(
          "設置郵件主題發生錯誤!");
               
          return false;
              }
           }
           
           
          public boolean setBody(String mailBody)
           {
             
          try
             {
              System.out.println(
          "設置郵件體格式");
              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;
             }
           }
           
          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;
              }
           }
           
           
          public boolean setFrom(String from) {
              System.out.println(
          "設置發信人!");
              
          try {
               mimeMsg.setFrom(
          new InternetAddress(from)); // 設置發信人
               return true;
              }
              
          catch (Exception e)
              {
               
          return false;
              }
           }
           
           
          public boolean setTo(String to)
           {
             System.out.println(
          "設置收信人");
             
          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(
          "發送附件到");
             
          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(
          "正在發送郵件.");
              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("發送郵件成功!");
              transport.close();
              
          return true;
             }
             
          catch (Exception e)
             {
              System.err.println(
          "郵件發送失敗!" + 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;
             
          //郵件內容 支持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;
             
          //發件人郵箱
             if (themail.setFrom("bbb@163.com"== false)
              
          return;
             
          //設置附件
             
          //if (themail.addFileAffix("#######") == false)
              
          //return; // 附件在本地機子上的絕對路徑
             
          //以下帳號信息為發件人郵箱
             themail.setNamePass("用戶名""密碼"); // 用戶名與密碼
             if (themail.sendout() == false)
              
          return;
           }
           
          }

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

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


          網站導航:
           
          主站蜘蛛池模板: 延吉市| 宽城| 海淀区| 鹿邑县| 额济纳旗| 图片| 鄢陵县| 邓州市| 桂林市| 青河县| 交城县| 南平市| 宁化县| 从江县| 仲巴县| 铜川市| 五峰| 普兰县| 浦县| 嘉峪关市| 丽江市| 绍兴县| 嵊州市| 南皮县| 临高县| 东阳市| 简阳市| 东至县| 麻栗坡县| 全椒县| 乌恰县| 通城县| 祁连县| 三明市| 龙川县| 灵武市| 亳州市| 洪湖市| 佛山市| 金沙县| 宾川县|