⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receiver.java

📁 利用JavaMail实现的发送及接收邮件的程序
💻 JAVA
字号:
package com.digipower.automail.mailsender;import java.io.*;import java.text.*;import java.util.*;import javax.mail.*;import javax.mail.internet.*;public class receiver{        private MimeMessage mimeMessage = null;        private String saveAttachPath = "";        private StringBuffer bodytext = new StringBuffer();        //save mail content in StringBuffer subject        private String dateformat = "yy-MM-dd HH:mm";        /**          *constant method,initial a MimeMessage subject          */        public receiver() {}        public receiver(MimeMessage mimeMessage) {                this.mimeMessage = mimeMessage;//System.out.println("create a PraseMimeMessage object......");        }        public void setMimeMessage(MimeMessage mimeMessage) {                this.mimeMessage = mimeMessage;        }        /**          *get the sender's name and address          */        public String getFrom() throws Exception {                InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom();                String from = address[0].getAddress();                String personal = address[0].getPersonal();                try                {                  if (from == null)                  {                          from = "";                  }                  if (personal == null)                  {                          personal = "";                  }                }                catch(Exception e)                {                  System.out.println(e + " getFrom Error");                }                String fromaddr = personal+"<"+from+">";                //String fromaddr = from;                return fromaddr;                }        /**          *获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同          *"to"---收件人  "cc"---抄送人 "bcc"---密送人地址          */        public String getMailAddress(String type) throws Exception        {                String mailaddr = "";                String addtype = type.toUpperCase();                InternetAddress [] address = null;                if (addtype.equals("TO") || addtype.equals("CC") || addtype.equals("BCC"))                {                        if (addtype.equals("TO"))                        {                                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO);                        }else if (addtype.equals("CC"))                        {                                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC);                        }else {                                address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC);                        }                        if (address != null)                        {                                for (int i = 0; i < address.length ; i++ )                                {                                        String email = address[i].getAddress();                                        if (email == null)                                        {                                                email = "";                                        }                                        else                                        {                                                email = MimeUtility.decodeText(email);                                        }                                        String personal = address[i].getPersonal();                                        if (personal == null)                                        {                                                personal = "";                                        }                                        else                                        {                                                personal = MimeUtility.decodeText(personal);                                        }                                        mailaddr += personal;                                        //String compositeto = personal + "<" + email + ">";                                        //mailaddr +=mailaddr.substring(1);                                }                                //mailaddr = mailaddr.substring(1);                        }                }                else                {                                throw new Exception("Error eamiladdr type!");                }                return mailaddr;        }        /**          *get mail subject          */        public String getSubject() throws MessagingException        {                String subject = "";                try                {                        subject = MimeUtility.decodeText(mimeMessage.getSubject());                        if (subject == null)                         {                           subject = "";                         }                }                catch (Exception exce)                {                  System.out.println("getSubject Error " + exce);                }                return subject;        }        /**          *get mail sent date          */        public String getSentDate() throws Exception        {                Date sentdate = mimeMessage.getSentDate();                SimpleDateFormat format = new SimpleDateFormat(dateformat);                return format.format(sentdate);        }        /**          *get mail content          */        public String getBodyText() {                return bodytext.toString();        }        /**          *解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮 *件主要是根据MimeType类型的不同执行不同的操作,一步一步地解析          */        public void getMailContent(Part part) throws Exception        {          try          {            String contenttype = part.getContentType();                  int nameindex = contenttype.indexOf("name");                  boolean conname = false;                  if (nameindex != -1) conname = true;  //System.out.println("CONTENETYPE: " + contenttype);  //System.out.println("nameindex: " + nameindex);                  if (part.isMimeType("text/plain") && !conname)                  {                          bodytext.append((String)part.getContent());                  }                  else if (part.isMimeType("text/html") && !conname)                  {                    bodytext.append((String)part.getContent());                  }                  else if (part.isMimeType("Multipart/*"))                  {                          Multipart multipart = (Multipart)part.getContent();                          int counts = multipart.getCount();                          for (int i = 0; i < counts ; i++ )                          {                                  getMailContent(multipart.getBodyPart(i));                          }                  }                  else if (part.isMimeType("message/rfc822"))                  {                          getMailContent((Part)part.getContent());                  }                  else                  {                  }          }          catch(Exception e)          {            System.out.println("getMailContent Error " + e);          }        }        /**          *判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"          */        public boolean getReplySign() throws MessagingException        {                boolean replysign = false;                String needreply[] = mimeMessage.getHeader("Disposition-Notification-TO");                if (needreply != null)                {                        replysign = true;                }                return replysign;        }        /**          *get mail Message-ID          */        public String getMessageId() throws MessagingException {                return mimeMessage.getMessageID();        }        /**          *判断此邮件是否已读,如果未读返回false,反之返回true          */        public boolean isNew() throws MessagingException {                boolean isnew = false;                Flags flags = ((Message)mimeMessage).getFlags();                Flags.Flag [] flag = flags.getSystemFlags();//System.out.println("flags's length:  " + flag.length);                for (int i = 0;i < flag.length ;i++ )                {                        if (flag[i] == Flags.Flag.SEEN)                        {                                isnew = true;//System.out.println("seen Message......");                                break;                        }                }                return isnew;        }/**  *判断此邮件是否包含附件  */public boolean isContainAttach(Part part)throws Exception{        boolean attachflag = false;        String contentType = part.getContentType();        if (part.isMimeType("multipart/*"))        {                Multipart mp = (Multipart)part.getContent();                for (int i = 0; i < mp.getCount() ;i++ )                {                        BodyPart mpart = mp.getBodyPart(i);                        String disposition = mpart.getDisposition();                        if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT)) || (disposition.equals(Part.INLINE))))                        {                                attachflag = true;                        }else if (mpart.isMimeType("multipart/*"))                        {                                attachflag = isContainAttach((Part)mpart);                        }else{                                String contype = mpart.getContentType();                                if (contype.toLowerCase().indexOf("application") != -1) attachflag = true;                                if (contype.toLowerCase().indexOf("name") != -1) attachflag = true;                        }                }        }else if (part.isMimeType("message/rfc822"))        {                attachflag = isContainAttach((Part)part.getContent());        }        return attachflag;}/**  *保存附件  */public void saveAttachMent(Part part)throws Exception{        String fileName = "";        if (part.isMimeType("multipart"))        {                Multipart mp = (Multipart)part.getContent();                for (int i = 0;i < mp.getCount() ;i++ )                {                        BodyPart mpart = mp.getBodyPart(i);                        String disposition = mpart.getDisposition();                        if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT)) || (disposition.equals(Part.INLINE))))                        {                                fileName = mpart.getFileName();                                if (fileName.toLowerCase().indexOf("gb2312") != -1)                                {                                        fileName = MimeUtility.decodeText(fileName);                                }                                saveFile(fileName,mpart.getInputStream());                        }else if (mpart.isMimeType("multipart/*"))                        {                                saveAttachMent(mpart);                        }else{                                fileName = mpart.getFileName();                                if ((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1))                                {                                        fileName = MimeUtility.decodeText(fileName);                                        saveFile(fileName,mpart.getInputStream());                                }                        }                }        }else if (part.isMimeType("message/rfc822"))        {                saveAttachMent((Part)part.getContent());        }}/**  *set the path for save attachment  */public void setAttachPath(String attachpath){        this.saveAttachPath = attachpath;}/**  *set date show format  */public void setDateFormat(String format)throws Exception{        this.dateformat = format;}/**  *get attach saved path  */public String getAttachPath(){        return saveAttachPath;}/**  *真正的保存附件到指定目录里  */private void saveFile(String fileName,InputStream in)throws Exception{        String osName = System.getProperty("os.name");        String storedir = getAttachPath();        String separator = "";        if (osName == null) osName ="";        if (osName.toLowerCase().indexOf("win") != -1)        {                separator = "\\";                if (storedir == null || storedir.equals("")) storedir = "c:\\temp";        }else {                separator = "/";                storedir ="/tmp";        }        File storefile = new File(storedir + separator + fileName);//System.out.println("storefile's path: " + storefile.toString());        //for (int i = 0 ;storefile.exists();i++) {                //storefile = new File(storedir + separator + fileName + i);        //}        BufferedOutputStream bos = null;        BufferedInputStream bis = null;        try        {                bos = new BufferedOutputStream(new FileOutputStream(storefile));                bis = new BufferedInputStream(in);                int c;                while ((c = bis.read()) != -1)                {                        bos.write(c);                        bos.flush();                }        }        catch (Exception exception)        {                exception.printStackTrace();                throw new Exception("Files save failse!!");        }finally {                bos.close();                bis.close();        }}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -