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

📄 receivetest.java

📁 自己编写的邮件管理系统程序源代码,方便管理自己的邮件
💻 JAVA
字号:
package mail.test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

public class ReceiveTest
{
        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 ReceiveTest() {}
        public ReceiveTest(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 + -