无法编译的源代码 - 不兼容的类型:javax.mail.Message []无法转换为javax.mail.Message [英] Uncompilable source code - incompatible types: javax.mail.Message[] cannot be converted to javax.mail.Message

查看:80
本文介绍了无法编译的源代码 - 不兼容的类型:javax.mail.Message []无法转换为javax.mail.Message的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

import java.util.Properties;

import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage.RecipientType;

public class InboxReaderIMAPLast10 {
     public static void main(String argv[]) {
          final int MAX_MESSAGES=10;
          
          String user = null;
          String password = null;
          
          for (int optind = 0; optind < argv.length; optind++) {
               if (argv[optind].equals("-U")) {
                    user = argv[++optind];
               } else if (argv[optind].equals("-P")) {
                    password = argv[++optind];
               }
          }
          
          Properties props = System.getProperties();
          props.setProperty("mail.store.protocol", "imaps");
          
          try {
               Session session = Session.getDefaultInstance(props, null);
               Store store = session.getStore("imaps");
               store.connect("imap.gmail.com", "cloudservicereport@gmail.com","ccooooll");
               System.out.println(store);

               Folder inbox = store.getFolder("Inbox");
               inbox.open(Folder.READ_ONLY);
               
               System.out.println("Total messages = " + inbox.getMessageCount());
               System.out.println("New messages = " + inbox.getNewMessageCount());
               System.out.println("unread messages = " + inbox.getUnreadMessageCount());
               System.out.println("deleted messages = " + inbox.getDeletedMessageCount());
               
               // Get the last 10 messages
               int end = inbox.getMessageCount();
               int start = end - MAX_MESSAGES + 1;
               Message messages[] = inbox.getMessages(start, end);
               
               // Reverse the ordering so that the latest comes out first
               Message messageReverse[] = reverseMessageOrder(messages);
               
               // Print the messages out
               System.out.println("message size = " + messages.length + "\n");
               int i =0;
               for (Message message : messageReverse) {
                    i++;
                    dumpMessage(i,message);
               }
          } catch (NoSuchProviderException e) {
               e.printStackTrace();
               System.exit(1);
          } catch (MessagingException e) {
               e.printStackTrace();
               System.exit(2);
          }

     }

     /*
      * reverse the order of the messages
      */
     private static Message[] reverseMessageOrder(Message[] messages) {
          Message revMessages[]= new Message[messages.length];
          int i=messages.length-1;
          for (int j=0;j<messages.length;j++,i--)>               revMessages[j] = messages; //that above mentioned error occurs here in netbeans ide

          }

          return revMessages;

     }



     private static void dumpMessage(int i, Message message) throws MessagingException {

          System.out.println(i + " Message envelope");

          System.out.println("------------------");

          // FROM

          for (Address address:message.getFrom()) {

               System.out.println("FROM: " + address.toString());

          }

          

          // TO

          for (Address address:message.getRecipients(RecipientType.TO)) {

               System.out.println("To: " + address.toString());

          }

          

          // SUBJECT

          System.out.println("Subject: " + message.getSubject() + "\n");

     }

}

推荐答案

revMessages是一个数组。

消息是一个数组。



那么,为什么要

revMessages is an array.
messages is an array.

So, why would
revMessages[j] = messages

工作?尝试:

work? Try:

revMessages[j] = messages[i]

相反......


这篇关于无法编译的源代码 - 不兼容的类型:javax.mail.Message []无法转换为javax.mail.Message的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆