email.java

来自「jetspeed源代码」· Java 代码 · 共 1,221 行 · 第 1/3 页

JAVA
1,221
字号

        message.setContent(msgecontent, "text/html");

        if (file != null && !file.equals(""))
        {
            log.info("reply with attachment ******");
            sendAttachment(message, file, msgecontent);
        }

        Transport.send(message);

        if (file != null)
        { // delete the file after being uploaded
            deleteUploadedfile(file);
        }
        //folder.close(true);
        //store.close();

    }

    public void forward(String to, String from, String subject, String content,
            Message message) throws Exception
    {

        //since folder in getMessage method (getting the exact message) is
        // opened, re-opening the folder may cause an error.
        //folder.open(Folder.READ_ONLY);

        //Message message[] = folder.getMessages();

        Message forward = new MimeMessage(session);

        forward.setFrom(new InternetAddress(from));
        forward.setSubject(subject);

        checkRecipients(to, forward);

        MimeMessage orig = (MimeMessage) message;
        if (orig.isMimeType("text/plain"))
        {
            log.info("text/plain forward");
            forward.setText(content.toString());
        } else
        {
            log.info("forward html *******************");
            forward.setContent(content, "text/html");
        }

        Transport.send(forward);
        //folder.close(true);
        //store.close();
    }

    // delete specific message
    public void contentDelete(int current_index) throws Exception
    {
        if(!folder.isOpen())
        {
            folder.open(Folder.READ_WRITE); 
        }
        
        // Get directory
        Message message[] = folder.getMessages();
        message[current_index].setFlag(Flags.Flag.DELETED, true);
        log.info("index" + current_index);
    }

    //delete specific message
    public void contentDelete(int current_index, String foldername,
            String protocol) throws Exception
    {

        Folder folder_name = store.getFolder(foldername);
        folder_name.open(Folder.READ_WRITE);
        // Get directory
        Message fmsge[] = folder_name.getMessages();
        fmsge[current_index].setFlag(Flags.Flag.DELETED, true);
        if (protocol.equals("imap"))
        {
            folder_name.expunge();
        }

    }

    //multiple delete
    public void checkboxDelete(String foldername, String[] checkboxes,
            String protocol) throws Exception
    {
        Folder folder_name = store.getFolder(foldername);
        folder_name.open(Folder.READ_WRITE);
        // Get directory
        Message message[] = folder_name.getMessages();

        for (int i = 0; i < checkboxes.length; i++)
        {
            int ind = Integer.parseInt(checkboxes[i]);
            message[ind].setFlag(Flags.Flag.DELETED, true);
            if (protocol.equals("imap"))
            {
                folder_name.expunge();
            }
        }
    }

    //multiple delete
    public void checkboxDelete(String[] checkboxes) throws Exception
    {
        if(!folder.isOpen())
        {
            folder.open(Folder.READ_WRITE);
        }
        
        // Get directory
        Message message[] = folder.getMessages();

        for (int i = 0; i < checkboxes.length; i++)
        {
            int ind = Integer.parseInt(checkboxes[i]);
            message[ind].setFlag(Flags.Flag.DELETED, true);

        }
    }

    //get the total no. of messages received
    public int getNo_of_messages() throws Exception
    {

        if(!folder.isOpen())
        {
            folder.open(Folder.READ_WRITE);    
        }
        
        Vector vMessages = new Vector();
        Message message[] = folder.getMessages();

        int msgectr = message.length;
        return msgectr;

    }

    // get the total number of new messages
    public int num_Newmessages() throws Exception
    {

        if(!folder.isOpen())
        {
            folder.open(Folder.READ_ONLY);    
        }
        
        
        Message message[] = folder.getMessages();
        Vector vNewmessages = new Vector();

        int length = message.length;
        for (int i = 0; i < length; i++)
        {

            folder.close(true);
            Message current_message = getMessage(i);
            int newMessage = checkNewmessage(current_message);
            if (newMessage == 1)
            {
                vNewmessages.add(String.valueOf(current_message
                        .getMessageNumber()));
                log.info("@@@@@@@@@@@@@@@@@@@@@@@@@ new!!!");
            } else
                log.info("@@@@@@@@@@@@@@@@@@@@@@@@@ old");
        }
        int num_newMessages = vNewmessages.size();
        return num_newMessages;
    }

    // this method simply close the inbox folder and store connection...
    // this is important especially when using pop3 protocol since
    // pop3 can't re-connect when mailbox is currently used.

    public void close() throws Exception
    {
       
        if(folder.isOpen() && folder != null)
        {
            folder.close(true);    
        }
        
        if(store.isConnected() && folder != null)
        {
            store.close();
        }
    }

    public void storeClose() throws Exception
    {
        if(store.isConnected() && store != null)
        {
            store.close();
        }
        
    }

    public void close(Folder foldername) throws Exception
    {
        
        if(folder.isOpen() && folder != null)
        {
            folder.close(true);    
        }
        
        if(store.isConnected() && store != null)
        {
            store.close();
        }
    }

    public Vector openInbox(String protocol) throws Exception
    {

        if(!folder.isOpen()) 
        {
            folder.open(Folder.READ_ONLY); 
        }
        
        Vector vAscmessages = new Vector();
        Message message[] = folder.getMessages();

        for (int i = 0; i < message.length; i++)
        {

            Message msge = message[i];

            boolean withAttachment = checkAttachment(msge);
            Hashtable ht = new Hashtable();
            ht.put("From", msge.getFrom()[0]);
            if (msge.getSubject() == null)
            {
                ht.put("Subject", "none"); // set subject to "none" if subject
                                           // is null
            } else
            {
                ht.put("Subject", msge.getSubject());
            }
            ht.put("index", String.valueOf(i));

            // POP3 does not provide a "received date", so the getReceivedDate
            // method will
            // return null. It may be possible to examine other message headers
            // (e.g., the "Received" headers) to estimate the received date,
            // but these techniques are error-prone at best.

            //check protocol... if protocol is pop3, received date is empty
            if (protocol.equals("imap"))
            {
                ht.put("ReceivedDate", msge.getReceivedDate());
            } else
            {
                log.info("empty date!!!!!!!");
                ht.put("ReceivedDate", "");
            }

            ht.put("size", String.valueOf(msge.getSize()));
            ht.put("message", msge);
            if (withAttachment == true)
            {
                ht.put("hasAttachment", "Attachment");
            } else
            {
                ht.put("hasAttachment", "");
            }
            // check if it's a new message,
            int status = checkNewmessage(msge);
            log.info("status " + status);

            if (status == 1)
            {//new
                ht.put("status", "new");
            } else
            {
                ht.put("status", "");
            }
            vAscmessages.add(ht);
        }
        //folder.close(true); //1-28
        //store.close(); //1-28
        return vAscmessages;
    }

    //get exact message
    public Message getMessage(int current_index) throws Exception
    {

        if(!folder.isOpen())
        {
            folder.open(Folder.READ_ONLY);
        }
        
        Message[] messages = folder.getMessages();
        Message message = messages[current_index];

        return message;

    }

    //get the exact message
    public Message getMessage(int current_index, String foldername)
            throws Exception
    {

        Folder folder_name = store.getFolder(foldername);
        folder_name.open(Folder.READ_ONLY);
        Message[] messages = folder_name.getMessages();
        Message message = messages[current_index];

        return message;

    }

    public String getSubject(Message message) throws Exception
    {
        //get subject
        String subject = message.getSubject();
        return subject;
    }

    public String getFrom(Message message) throws Exception
    {
        String from = message.getFrom()[0].toString();
        return from;
    }

    public String getReceivedDate(Message message) throws Exception
    {
        String receivedDate = message.getReceivedDate().toString();
        return receivedDate;

    }

    //get recipients
    public Vector getTo(Message message) throws Exception
    {
        Vector vAddr = new Vector();

        for (int ctr = 0; ctr < message.getRecipients(Message.RecipientType.TO).length; ctr++)
        {// hcontent.put("To",message[current_index].getRecipients(Message.RecipientType.TO)[ctr]);
            log.info("allRecipients in showcontent"
                    + message.getRecipients(Message.RecipientType.TO)[ctr]);
            vAddr.add(message.getRecipients(Message.RecipientType.TO)[ctr]);
            log.info("*** all recipients " + vAddr.size());
        }
        return vAddr;
    }

    public String getMessageContent(Message message) throws Exception
    {
        String cmessage = null;

        if (message.isMimeType("text/plain"))
        {
            //cmessage = convertMessage(message.getContent().toString());
            cmessage = message.getContent().toString();
        } else if (message.isMimeType("text/html"))
        {
            cmessage = convertMessage(message.getContent().toString());
        } else
        {
            Object obj = message.getContent();
            Multipart mpart = (Multipart) obj;
            for (int i = 0, n = mpart.getCount(); i < n; i++)
            {
                Vector vAttachments = new Vector();

                Part part = mpart.getBodyPart(i);
                //get attachment
                String disposition = part.getDisposition();
                if ((disposition != null)
                        && ((disposition.equalsIgnoreCase(Part.ATTACHMENT)) || (disposition
                                .equals(Part.INLINE))))
                {
                    if (disposition.equals(Part.INLINE))
                    {
                        if (part.isMimeType("text/plain"))
                        {
                            cmessage = (String) part.getContent().toString();
                        } else
                        {// if content-type is Image/gif, get the filename and
                         // add to the vector that holds all attachments
                            getAttachments(message);
                        }
                    }

                    if (disposition.equalsIgnoreCase(Part.ATTACHMENT))
                    {
                        log.info("*** Attachment name: " + part.getFileName());
                        getAttachments(message);
                    }
                } else if (disposition == null)
                {
                    if (part.getContent() instanceof MimeMultipart)
                    { // multipart with attachment
                        MimeMultipart mm = (MimeMultipart) part.getContent();
                        cmessage = (mm.getBodyPart(1)).getContent().toString();
                    } else
                    {//multipart - w/o attachment
                        cmessage = (String) part.getContent().toString();
                    }
                }
            }//for
        }//else
        return cmessage;

⌨️ 快捷键说明

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