JAVA學(xué)習(xí)點(diǎn)點(diǎn)滴滴

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

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            18 隨筆 :: 1 文章 :: 2 評(píng)論 :: 0 Trackbacks
          本文章對(duì):
          發(fā)送普通郵件,接受普通郵件
          發(fā)送帶有附件的郵件,接收帶有附件的郵件
          發(fā)送html形式的郵件,接受html形式的郵件
          [b[發(fā)送帶有圖片的郵件等做了一個(gè)總結(jié)。
          程序代碼:  
          程序代碼:

          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";
          //此段代碼用來(lái)發(fā)送普通電子郵件
          void jButton1_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = new Properties();//獲取系統(tǒng)環(huán)境
          Authenticator auth = new Email_Autherticator();//進(jìn)行郵件服務(wù)器用戶認(rèn)證

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

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

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

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


          Transport.send(message);//發(fā)送郵件
          /* // 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);
          }
          }

          //此段代碼用來(lái)進(jìn)行服務(wù)器對(duì)用戶的認(rèn)證
          public class Email_Autherticator extends Authenticator
          {
          public Email_Autherticator()
          {
          super();
          }
          public PasswordAuthentication getPasswordAuthentication()
          {
          return new PasswordAuthentication(username,password);
          }
          }
          //該程序?yàn)榻邮锗]件
          void jButton2_actionPerformed(ActionEvent e) {
          try
          {
          Properties props = System.getProperties(); //獲取系統(tǒng)變量
          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后,取得一個(gè)文件夾,一般默認(rèn)的是INDEX
          folder.open(Folder.READ_WRITE);//READ_ONLY為打開(kāi)方式
          Message message[] = folder.getMessages();//從文件夾獲取郵件信息

          //可以用兩種方式去獲得郵件信息,getContent()用來(lái)獲得郵件的主體信息。而WriteTo()可以用來(lái)獲得郵件的全部信息,包括頭部信息
          // 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");

          //以下代碼用來(lái)獲得郵件的正文信息
          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);//最后刪除服務(wù)器端的郵件
          }
          //DELETED,ANSWERED,DRAFT,FLAGGED,RECENT,SEEN,USER
          folder.close(true);//true的話,徹底刪除已經(jīng)標(biāo)記為DELETE的郵件,如果為false的話,就不刪除
          store.close();//關(guān)閉
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }
          }

          void jButton4_actionPerformed(ActionEvent e) {
          try
          {//該程序?yàn)榛貜?fù)郵件
          Properties props = System.getProperties(); //獲取系統(tǒng)變量
          Authenticator auth = new Email_Autherticator(); //取得穃uFFFD衿魅現(xiàn)?
          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();//獲取郵件發(fā)信人的署名

          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();//關(guān)閉
          }
          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 
          //原理:可以將郵件看成有多個(gè)部分組成的,如正文是一個(gè)部分,附件也是一個(gè)部分,所以用BodyPart來(lái)設(shè)置郵件的格式
          程序代碼:  
          程序代碼:
          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");//此處設(shè)置郵件的附件
          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);
          }

          }
          //此段代碼用來(lái)發(fā)送帶有附件的郵件
          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");

          //以下代碼用來(lái)獲取郵件的主體信息
          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))))
          {

          //以下代碼將獲得的附件保存到當(dāng)前目錄下,以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();//獲得附件的大小,不一定很準(zhǔn)確。

          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();//關(guān)閉
          }
          catch(Exception ej2)
          {
          System.out.println(ej2);
          }
          }

          //此段代碼用來(lái)發(fā)送帶有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);
          //設(shè)置郵件正文
          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設(shè)置郵件的格式因?yàn)槭菐в衕tml文檔的,所以用text/html格式

          message.setSubject(mail_subject);
          // message.setText(mail_body);在使用message.setContent()時(shí)候,好象不能用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);
          }

          }

          //此段代碼用來(lái)發(fā)送帶有圖片的郵件
          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");
          //原理同發(fā)送附件一樣,將郵件看成有多個(gè)部分組成的,先設(shè)置每一個(gè)部分,然后再全部將它們合起來(lái)即可。
          //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);
          }

          }

          //該程序用來(lái)接受帶有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");

          //獲取郵件的信息,并且對(duì)其每一部分進(jìn)行操作
          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 海思 閱讀(423) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德庆县| 吴桥县| 山丹县| 大宁县| 无极县| 镇原县| 和硕县| 固镇县| 渭南市| 葫芦岛市| 太仆寺旗| 大石桥市| 江源县| 商水县| 泸溪县| 堆龙德庆县| 昔阳县| 安阳县| 莆田市| 泌阳县| 同江市| 苏尼特左旗| 江都市| 图木舒克市| 喀什市| 临潭县| 汕头市| 舒城县| 班戈县| 嘉善县| 宕昌县| 上栗县| 金堂县| 南宫市| 肥城市| 金昌市| 青河县| 拜泉县| 信宜市| 六枝特区| 微博|