【问题标题】:Fetch mail in descending order of date using pop3使用pop3按日期降序获取邮件
【发布时间】:2013-10-24 10:32:37
【问题描述】:

在这里,我按升序获取了所有电子邮件,表示根据最后日期检索的邮件。我需要反过来。

public void downloadEmailAttachments(String host, int port,String userName, String password)
     {
    Properties properties = new Properties();
    properties.put("mail.pop3.host", host);
    properties.put("mail.pop3.port", port);
    properties.put("mail.pop3.user",userName);
    properties.put("mail.password",password);
    properties.setProperty("mail.pop3.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    properties.setProperty("mail.pop3.socketFactory.fallback", "false");
    properties.setProperty("mail.pop3.socketFactory.port",
            String.valueOf(port));

    Session session = Session.getDefaultInstance(properties);

    try {
        Store store = session.getStore("pop3");
        store.connect(host,userName, password);

        Folder folderInbox = store.getFolder("INBOX");           
        folderInbox.open(Folder.READ_ONLY);             
      Message[] arrayMessages = folderInbox.getMessages();
       for (int i = 0; i < arrayMessages.length; i++) //max=puruna date=after,min=ajika date...
       {
           if (arrayMessages[i].getSentDate().after(maxDate) && arrayMessages[i].getSentDate().before(minDate))
           {
             Message message = arrayMessages[i];        
             Address[] fromAddress = message.getFrom();
            String from = fromAddress[0].toString();
            Address[]toAdress=message.getAllRecipients();
            String to=toAdress[0].toString();
            String subject = message.getSubject();
            String sentDate = message.getSentDate().toString();
            String contentType = message.getContentType().toString();
            String messageContent = "";
            String attachFiles = "";

            if (contentType.contains("multipart")) {
                // content may contain attachments
                Multipart multiPart = (Multipart) message.getContent();
                int numberOfParts = multiPart.getCount();
                for (int partCount = 0; partCount < numberOfParts; partCount++) {
                    MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
                    if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
                        // this part is attachment
                        String fileName = part.getFileName();
                        attachFiles += fileName + ", ";
                        part.saveFile(saveDirectory + File.separator + fileName);

                    } else {
                        // this part may be the message content
                        messageContent = part.getContent().toString();
                    }
                }

                if (attachFiles.length() > 1) {
                    attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
                }
            } else if (contentType.contains("text/plain")
                    || contentType.contains("text/html")) {
                Object content = message.getContent();
                if (content != null) {
                    messageContent = content.toString();
                }

            }

            System.out.println("Message #" + (i + 1) + ":");
            System.out.println("\t From: " + from);
            System.out.println("\t to: " + to);
            System.out.println("\t Subject: " + subject);
            System.out.println("\t Sent Date: " + sentDate);
            System.out.println("\t Message: " + messageContent);
            System.out.println("\t Attachments: " + attachFiles);
        }

          new EmailAttachmentReceiver().setSaveDirectory(saveDirectory);
      }
       folderInbox.close(false);
       store.close();
       }

【问题讨论】:

    标签: java jakarta-mail pop3


    【解决方案1】:

    您可以使用Comparator 进行排序处理

    Message[] arrayMessages = folderInbox.getMessages();
    
    Comparator<Message> messageComparator = new Comparator<Message>( {
      public int compare(Message m1, Message m2) {
          if (m1.getSentDate() == null || m2.getSentDate() == null)
            return 0;
          return m2.getSentDate().compareTo(m1.getSentDate());
      }
    });
    
    Arrays.sort(arrayMessages, messageComparator);
    

    【讨论】:

    • 你的处理速度会很慢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 2019-04-17
    • 2016-12-16
    • 1970-01-01
    相关资源
    最近更新 更多