程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 使用JAVAMAIL發郵件的一個例子(轉)

使用JAVAMAIL發郵件的一個例子(轉)

編輯:JAVA編程入門知識

          首先引入j2ee的包路徑到ClassPath,已經安裝Jbuilder的可以在它的安裝路徑lib目錄下找
  到mail.jar,activation.jar,將這兩個包加入系統的環境變量,那麼即使不用JBuilder開發的話也可以
  使用了.
  
          程序:
  
  import Java.io.*;
  import java.util.*;
  import javax.mail.*;
  import javax.mail.internet.*;

  /**
   * <p>Title: 簡易MailBean</p>
   * <p>Description: 提供簡便的Mail發送功能(/p>
   * <p>Copyright: Copyright (c) 2003</p>
   * @version 1.0
   */

  class ExtendString {
    public ExtendString() {
    }
    /**
     去掉字符串兩端的空白字符,並將字符串轉化為中國的標准字符gb2312的字符串.
     */
    public String CS(String str) { //去掉字符串2端的空白字符
        try {
            if (str == null)
                return "";
            str = str.trim();
            if (str == null)
                return "";
            str = new String(str.getBytes("8859_1"), "GBK");
        }
        catch (Exception e) {
            System.out.println(e);
        }
        return str;
    }

  }

  public class SendMail
  {
      private String errMsg = "";
      private ExtendString ExStr = new ExtendString();

      private String sender = "";//發件人地址
      private String smtpHost = "";//郵件發送服務器(smtp)
      private String user = ""; //登錄用戶名
      private String passWord = "";//登錄密碼

      private String subject = "";//mail主題

      public SendMail()
      {
          this.setPropertiesAttri();
      }

      private void setPropertiesAttri()
      {
          try
          {
              InputStream is = getClass().getResourceAsStream("MailServer.properties");
              Properties prop = new Properties();
  
               prop.load(is);

              this.setSmtpHost(prop.get("SmtpHost").toString());
              this.setUser(prop.get("User").toString());
              this.setPassword(prop.get("Password").toString());
              this.setSender(prop.get("Sender").toString());
              this.setSubject(ExStr.CS(prop.get("Subject").toString()));
          }
          catch(Exception ex)
          {
              System.err.println("ex1 in sendmail.java:"+ex.toString());
          }
      }
      /** 設置發件人地址 */

      public void setSender(String sender)
      {
          this.sender = sender;
      }

      public String getSender()
      {
          return sender;
      }

      /** 設置郵件發送服務器(smtp) */
      public void setSmtpHost(String smtpHost) {this.smtpHost = smtpHost;}
      public String getSmtpHost() {return smtpHost;}

      /** 設置登錄用戶名 */
      public void setUser(String user)
      {
          this.user = user;
      }
      public String getUser()
      {
          return user;
      }

      /** 設置登錄密碼 */
      public void setPassword(String password)
      {
          this.password = password;
      }
      public String getPassword()
      {
          return password;
      }

      /** 設置mail主題 */
      public void setSubject(String subject)
      {
          this.subject = subject;
      }
      public String getSubject()
      {
          return subject;
      }

      /**
       * 使用smtp發送郵件 主程序
       * @throws MessagingException mail發送失敗
       */
      public void smtp(String receiver,String content) throws MessagingException
  
       {
          if (smtpHost == null) throw new MessagingException("smtpHost not found");
          if (user == null) throw new MessagingException("user not found");
          if (password == null) throw new MessagingException("password not found");

          Properties properties = new Properties();
          properties.put("mail.smtp.host", smtpHost);//設置smtp主機
          properties.put("mail.smtp.auth", "true");//使用smtp身份驗證

          Session session = Session.getDefaultInstance(properties,
               new Authenticator(){
                 public PasswordAuthentication getPasswordAuthentication(){
                   return new PasswordAuthentication(user, password);
                 }
               });

          //獲得郵件會話對象
          MimeMessage mimeMsg = new MimeMessage(session);//創建MIME郵件對象
          if (sender != null)//設置發件人地址
              {
                  mimeMsg.setFrom(new InternetAddress(sender));
              }
          if (receiver != null)//設置收件人地址
             {
                 mimeMsg.setRecipients(Message.RecipientType.TO, parse(receiver));
             }
          if (subject != null)//設置郵件主題
             {
                 mimeMsg.setSubject(subject, "GBK");
             }
          MimeBodyPart part = new MimeBodyPart();//mail內容部分
          part.setText(content == null ? "" : content, "GBK");

          //設置郵件格式為Html cqc
          part.setContent(content.toString(),"text/html;charset=GBK");
  
           Multipart multipart = new MimeMultipart();
          multipart.addBodyPart(part);//在 Multipart 中增加mail內容部分
          mimeMsg.setContent(multipart);//增加 Multipart 到信息體
          mimeMsg.setSentDate(new Date());//設置發送日期
          Transport.send(mimeMsg);//發送郵件
      }

      /** 解析地址集合字符串 */
      private InternetAddress[] parse(String addressSet) throws AddressException
      {
          ArrayList list = new ArrayList();
          StringTokenizer tokens = new StringTokenizer(addressSet, ";");
          while (tokens.hasMoreTokens())
          {
              list.add(new InternetAddress(tokens.nextToken().trim()));
          }
          InternetAddress[] addressArray = new InternetAddress[list.size()];
          list.toArray(addressArray);
          return addressArray;
      }

      /**
       *  供外部調用的接口
       */
    
      public boolean sendMails(String mail,String content)
      {
          int mailLen = 0 ;
          int contentLen= 0;
          if (mail == nullcontent==null)
          {
              return false;
          }

              try
              {
                  this.smtp(mail,content);
              }
              catch(Exception ex)
              {
                  System.err.println("ex2 in sendmail.java:"+ex.toString());
              }

          return true;
      }

           public static void main (String[] args)
       {
           SendMail mail = new SendMail();
  
            String email = "[email protected];[email protected]";
           String content = "賬號:123 密碼:123 <br/>感謝您注冊!<br/><a href='http://www.xxxx.com.cn' target='_blank'>www.xxxx.com.cn</a><br/>此致<br/>xxxx <br/>即日";
           try
           {
               mail.sendMails(email,content);
           }
           catch (Exception ex)
           {
              System.err.println("ex33:"+ex.toString());
           }
       }

  
   }

  編譯通過後,在class文件的目錄下建立一個文本文件MailServer.properties,
  格式:
  SmtpHost=smtp.163.com
  User=user
  Password=pwd
  [email protected]
  Subject=Hello
  
  
  運行程序即可實現郵件發送!

  


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved