JAVA學習點點滴滴

          用開放的腦子去闖蕩;用開闊的視野去拼搏;用平和的身心去磨練;用美好的理想去追求!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            18 隨筆 :: 1 文章 :: 2 評論 :: 0 Trackbacks
          本文章對:
          發送普通郵件,接受普通郵件
          發送帶有附件的郵件,接收帶有附件的郵件
          發送html形式的郵件,接受html形式的郵件
          [b[發送帶有圖片的郵件等做了一個總結。
          程序代碼:  
          程序代碼:

          import java.awt.*;
          import java.awt.event.*;
          import javax.swing.*;
          import com.borland.jbcl.layout.*;
          import javax.mail.*;
          import java.util.*;
          import javax.mail.internet.*;
          import java.io.*;
          import javax.activation.*;


          public String host="smtp.163.com";
          public String username="abcdefg";
          public String password="abcdefg";
          public String mail_head_name="this is head of this mail";
          public String mail_head_value="this is head of this mail";
          public String mail_to="xyz@163.com";
          public String mail_from="abcdefg@163.com";
          public String mail_subject="this is the subject of this test mail";
          public String mail_body="this is the mail_body of this test mail";
          //此段代碼用來發送普通電子郵件
          void jButton1_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = new Properties();//獲取系統環境
          Authenticator auth = new Email_Autherticator();//進行郵件服務器用戶認證

          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth);
          //設置session,和郵件服務器進行通訊。
          MimeMessage message = new MimeMessage(session);
          message.setContent("Hello","text/plain");//設置郵件格式
          message.setSubject(mail_subject);//設置郵件主題
          message.setText(mail_body);//設置郵件正文
          message.setHeader(mail_head_name,mail_head_value);//設置郵件標題
          message.setSentDate(new Date());//設置郵件發送日期

          Address address = new InternetAddress(mail_from,"sunxiaoming");
          message.setFrom(address); //設置郵件發送者的地址

          //如果要對郵件發送者進行多個參數的設置,可以用以下語句
          // Address address[] = {new InternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")};
          // message.addFrom(address);

          Address toAddress = new InternetAddress(mail_to);//設置郵件接收方的地址
          message.addRecipient(Message.RecipientType.TO,toAddress);
          // Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//設置郵件抄送者的地址
          // message.addRecipient(Message.RecipientType.CC,ccAddress);


          Transport.send(message);//發送郵件
          /* // to get a specific instance from the session for your protocol.pass along the username and password
          // (blank if unnecessary).send the message,and close the connection;
          message.saveChanges();
          Transport transport = session.getTransport("smtp");
          transport.connect(host,username,password);
          transport.sendMessage(message,message.getAllRecipients());
          transport.close();
          */

          System.out.println("send ok!");
          }
          catch(Exception ex)
          {
          System.out.println("faild"+ex);
          }
          }

          //此段代碼用來進行服務器對用戶的認證
          public class Email_Autherticator extends Authenticator
          {
          public Email_Autherticator()
          {
          super();
          }
          public PasswordAuthentication getPasswordAuthentication()
          {
          return new PasswordAuthentication(username,password);
          }
          }
          //該程序為接收郵件
          void jButton2_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = System.getProperties(); //獲取系統變量
          Authenticator auth = new Email_Autherticator();
          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth); //建立session
          Store store = session.getStore("pop3");
          store.connect(host,username,password);

          //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
          Folder folder = store.getFolder("INBOX");//連接到Store后,取得一個文件夾,一般默認的是INDEX
          folder.open(Folder.READ_WRITE);//READ_ONLY為打開方式
          Message message[] = folder.getMessages();//從文件夾獲取郵件信息

          //可以用兩種方式去獲得郵件信息,getContent()用來獲得郵件的主體信息。而WriteTo()可以用來獲得郵件的全部信息,包括頭部信息
          // System.out.println(((MimeMessage)message).getContent());
          for (int i=0,n=message.length;i
          {

          String out_from_person = ((InternetAddress)message.getFrom()[0]).getPersonal();
          String out_from_address = ((InternetAddress)message.getFrom()[0]).getAddress();
          System.out.println("From:"+out_from_person+"t");
          System.out.println("Address:"+out_from_address+"t");

          String out_subject = message.getSubject();
          System.out.println("Subject:"+out_subject+"t");

          //以下代碼用來獲得郵件的正文信息
          Part messagePart = message;
          Object out_content = messagePart.getContent();
          if (out_content instanceof Multipart)
          {
          messagePart = ((Multipart)out_content).getBodyPart(0);
          System.out.println("[ Multipart Message ]");
          }
          String out_content_type = messagePart.getContentType();
          System.out.println("CONTENT:"+out_content_type);

          if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
          {
          InputStream ipstm = messagePart.getInputStream();
          BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
          String thisLine = bufreader.readLine();
          while (thisLine != null)
          {
          System.out.println("thisLine: "+thisLine);
          thisLine = bufreader.readLine();
          }
          }
          System.out.println("------------------------------------------------------------");
          message.setFlag(Flags.Flag.DELETED,true);//最后刪除服務器端的郵件
          }
          //DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
          folder.close(true);//true的話,徹底刪除已經標記為DELETE的郵件,如果為false的話,就不刪除
          store.close();//關閉
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }
          }

          void jButton4_actionPerformed(ActionEvent e) {
          try
          {//該程序為回復郵件
          Properties props = System.getProperties(); //獲取系統變量
          Authenticator auth = new Email_Autherticator(); //取得穃uFFFD衿魅現?
          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth); //建立session
          Store store = session.getStore("pop3");
          store.connect(host,username,password);

          Folder folder = store.getFolder("INBOX");
          folder.open(Folder.READ_WRITE);
          Message message[] = folder.getMessages();

          for (int i=0,n=message.length;i
          {
          // String out_from_person = ((InternetAddress)message.getFrom()[0]).getPersonal();//獲取郵件發信人的署名

          String out_from_address = ((InternetAddress)message.getFrom()[0]).getAddress();
          System.out.println(out_from_address);

          Message forward = new MimeMessage(session);
          forward.setSubject("Fwd:"+message.getSubject());
          forward.setFrom(new InternetAddress(mail_to));
          forward.addRecipient(Message.RecipientType.TO,new InternetAddress(out_from_address));

          BodyPart messageBodyPart = new MimeBodyPart();
          messageBodyPart.setText("Here you go with the original message:nn");

          Multipart multipart = new MimeMultipart();
          multipart.addBodyPart(messageBodyPart);

          messageBodyPart = new MimeBodyPart();
          messageBodyPart.setDataHandler(message.getDataHandler());

          multipart.addBodyPart(messageBodyPart);
          forward.setContent(multipart);

          Transport.send(forward);
          message.setFlag(Flags.Flag.DELETED,true);//DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
          }
          folder.close(true);
          store.close();//關閉
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }

          }

          void jButton5_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = new Properties();
          Authenticator auth = new Email_Autherticator();

          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth);
          MimeMessage message = new MimeMessage(session);
          message.setContent("Hello","text/plain");
          message.setSubject(mail_subject);
          message.setText(mail_body);
          message.setHeader(mail_head_name,mail_head_value);
          message.setSentDate(new Date());
          message.setFrom(new InternetAddress(mail_from,"sunxiaoming")); //to signal man 
          //原理:可以將郵件看成有多個部分組成的,如正文是一個部分,附件也是一個部分,所以用BodyPart來設置郵件的格式
          程序代碼:  
          程序代碼:
          message.addRecipient(Message.RecipientType.TO,new InternetAddress(mail_to));
          BodyPart messageBodyPart = new MimeBodyPart();
          messageBodyPart.setText("Pardon Ideas");
          Multipart multipart = new MimeMultipart();
          multipart.addBodyPart(messageBodyPart);

          messageBodyPart = new MimeBodyPart();
          DataSource source = new FileDataSource("./20020423/test.zip");//此處設置郵件的附件
          messageBodyPart.setDataHandler(new DataHandler(source));
          messageBodyPart.setFileName("test.zip");
          multipart.addBodyPart(messageBodyPart);
          message.setContent(multipart);
          Transport.send(message);
          System.out.println("send ok!");
          }
          catch(Exception ex)
          {
          System.out.println("faild"+ex);
          }

          }
          //此段代碼用來發送帶有附件的郵件
          void jButton6_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = System.getProperties();
          Authenticator auth = new Email_Autherticator();
          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth); //建立session
          Store store = session.getStore("pop3");
          store.connect(host,username,password);

          //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
          Folder folder = store.getFolder("INBOX");
          folder.open(Folder.READ_WRITE);
          Message message[] = folder.getMessages();

          for (int i=0,n=message.length;i
          {
          //獲得郵件的部分信息,如頭部信息,送信人的署名,送信人的郵件地址
          String out_from_person = ((InternetAddress)message.getFrom()[0]).getPersonal();
          String out_from_address = ((InternetAddress)message.getFrom()[0]).getAddress();
          System.out.println("From:"+out_from_person+"t");
          System.out.println("Address:"+out_from_address+"t");
          String out_subject = message.getSubject();
          System.out.println("Subject:"+out_subject+"t");

          //以下代碼用來獲取郵件的主體信息
          Part messagePart = message;
          Object out_content = messagePart.getContent();
          if (out_content instanceof Multipart)
          {
          messagePart = ((Multipart)out_content).getBodyPart(0);
          System.out.println("[ Multipart Message ]");
          }
          String out_content_type = messagePart.getContentType();
          System.out.println("CONTENT:"+out_content_type);

          if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
          {
          InputStream ipstm = messagePart.getInputStream();
          BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
          String thisLine = bufreader.readLine();
          while (thisLine != null)
          {
          System.out.println("thisLine: "+thisLine);
          thisLine = bufreader.readLine();
          }
          }
          //獲取附件
          Multipart mp = (Multipart)message.getContent();
          for (int j=0,m=mp.getCount();j
          {
          System.out.println("***"+m+"***");
          Part part = mp.getBodyPart(j);
          String disposition = part.getDisposition();
          if ((disposition != null) && ((disposition.equals(part.ATTACHMENT)) | | (disposition.equals(part.INLINE))))
          {

          //以下代碼將獲得的附件保存到當前目錄下,以part.getFileName()為文件名,也既是附件的名稱。
          File filename = new File(part.getFileName());
          for (int k=0;filename.exists();k++)
          {
          filename = new File(part.getFileName()+k);
          }
          FileOutputStream myFileoutputstream = new FileOutputStream(filename);
          int chunk = part.getSize();//獲得附件的大小,不一定很準確。

          byte [] buffer = new byte[chunk];
          InputStream instream = part.getInputStream();
          instream.read(buffer,0,chunk);
          myFileoutputstream.write(buffer,0,chunk);
          instream.close();
          myFileoutputstream.close();
          }
          }
          System.out.println("------------------------------------------------------------");
          message.setFlag(Flags.Flag.DELETED,true);
          }
          folder.close(true);
          store.close();//關閉
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }
          }

          //此段代碼用來發送帶有html信息的郵件
          void jButton8_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = new Properties();
          Authenticator auth = new Email_Autherticator();
          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth);
          MimeMessage message = new MimeMessage(session);
          //設置郵件正文
          String htmltext="< h1>hello< /h1>"+"< a href="http://www.sina.com.cn" target="_blank">click me please!< /a>";
          message.setContent(htmltext,"text/html");//text/plain設置郵件的格式因為是帶有html文檔的,所以用text/html格式

          message.setSubject(mail_subject);
          // message.setText(mail_body);在使用message.setContent()時候,好象不能用message.setText()
          message.setHeader(mail_head_name,mail_head_value);
          message.setSentDate(new Date());
          Address address = new InternetAddress(mail_from,"sunxiaoming");
          message.setFrom(address);
          Address toAddress = new InternetAddress(mail_to);
          message.addRecipient(Message.RecipientType.TO,toAddress);
          Transport.send(message);
          System.out.println("send ok!");
          }
          catch(Exception ex)
          {
          System.out.println("faild"+ex);
          }

          }

          //此段代碼用來發送帶有圖片的郵件
          void jButton9_actionPerformed(ActionEvent e) {
          try
          {
          String file = "./20020423/test.gif";
          Properties props = new Properties();
          Authenticator auth = new Email_Autherticator();

          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth);
          MimeMessage message = new MimeMessage(session);

          message.setSubject("Embedded Image");
          Address address = new InternetAddress(mail_from,"sunxiaoming");
          message.setFrom(address);
          Address toAddress = new InternetAddress(mail_to);
          message.addRecipient(Message.RecipientType.TO,toAddress);
          message.setHeader(mail_head_name,mail_head_value);
          message.setSentDate(new Date());

          BodyPart messageBodyPart = new MimeBodyPart();
          String htmlText = "< h1>< /h1>"+"< img src="cid:memememe">";//加入圖片
          messageBodyPart.setContent(htmlText,"text/html");
          //原理同發送附件一樣,將郵件看成有多個部分組成的,先設置每一個部分,然后再全部將它們合起來即可。
          //Create a related multi-part to combine the parts
          MimeMultipart multipart = new MimeMultipart("related");
          multipart.addBodyPart(messageBodyPart);

          //Create part for the image
          messageBodyPart = new MimeBodyPart();

          //Fetch the image and associate to part
          DataSource fds = new FileDataSource(file);
          messageBodyPart.setDataHandler(new DataHandler(fds));
          messageBodyPart.setHeader("Content-ID","memememe");

          //Add part to multi-part
          multipart.addBodyPart(messageBodyPart);

          //Associate multi-part with message
          message.setContent(multipart);

          Transport.send(message);
          System.out.println("send ok!");
          }
          catch(Exception ex)
          {
          System.out.println("faild"+ex);
          }

          }

          //該程序用來接受帶有html信息的郵件
          void jButton7_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = System.getProperties();
          Authenticator auth = new Email_Autherticator();
          props.put("mail.smtp.host",host);
          props.put("mail.smtp.auth","true");
          Session session = Session.getDefaultInstance(props,auth);
          Store store = session.getStore("pop3");
          store.connect(host,username,password);

          //After connecting to the Store,you can get a Folder,which must be opened before you can read messages from it:
          Folder folder = store.getFolder("INBOX");
          folder.open(Folder.READ_WRITE);
          Message message[] = folder.getMessages();

          for (int i=0,n=message.length;i
          // for (int i=0,n=1;i
          {
          String out_from_person = ((InternetAddress)message.getFrom()[0]).getPersonal();
          String out_from_address = ((InternetAddress)message.getFrom()[0]).getAddress();
          System.out.println("From:"+out_from_person+"t");
          System.out.println("Address:"+out_from_address+"t");

          String out_subject = message.getSubject();
          System.out.println("Subject:"+out_subject+"t");

          //獲取郵件的信息,并且對其每一部分進行操作
          Part messagePart = message;
          Object out_content = messagePart.getContent();
          if (out_content instanceof Multipart)
          {
          messagePart = ((Multipart)out_content).getBodyPart(0);
          System.out.println("[ Multipart Message ]");
          }
          String out_content_type = messagePart.getContentType();
          System.out.println("CONTENT:"+out_content_type);

          jEditorPane1.setText("");//將其顯示在jEditorPanel上
          jEditorPane1.setContentType("text/html");
          jEditorPane1.setText((String)out_content);
          jEditorPane1.setEditable(false);

          /*
          if (out_content_type.startsWith("text/plain") | | out_content_type.startsWith("text/html"))
          {
          InputStream ipstm = messagePart.getInputStream();
          BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
          String thisLine = bufreader.readLine();
          while (thisLine != null)
          {
          System.out.println("thisLine: "+thisLine);
          thisLine = bufreader.readLine();
          }
          }
          */

          System.out.println("------------------------------------------------------------");
          message.setFlag(Flags.Flag.DELETED,true);
          }
          folder.close(true);
          store.close();
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }

          posted on 2006-02-18 19:40 海思 閱讀(422) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 玉树县| 澄迈县| 平罗县| 体育| 渝北区| 巴彦淖尔市| 峡江县| 五寨县| 林州市| 钟山县| 泸水县| 东乡| 桓仁| 修文县| 涪陵区| 德阳市| 古蔺县| 高州市| 罗山县| 泰安市| 外汇| 曲松县| 万源市| 洮南市| 大新县| 桦甸市| 泸西县| 甘南县| 子洲县| 天镇县| 驻马店市| 华安县| 商洛市| 霸州市| 句容市| 平邑县| 兴山县| 广昌县| 岳阳县| 西华县| 山东省|