2017-06-17 9 views
0

昨日私はこのサイトで例外の処理方法を知らなかったと尋ねましたが、私は幸運にも短時間で答えを見つけました。まあ..別のものがあります。クラスは他の質問と同じです:IMAPサーバーからメッセージをダウンロードして配列に処理すると、IMAPAddress Exceptionが返されます。今回私は本当に何ができるのかわからないので、POP3を使いたくないのは、電子メールをサーバーに保存しておきたいのです。注意していただきありがとうございます。ここでIMAPAddress例外 - こんにちは、それは私です。

はコードです:

ScaricaEmail(String host,String porta,String user,String pw) 
{ 
    this.host=host; 
    this.porta=porta; 
    nick=user; 
    this.pw=pw; 
} 
public static Object[][] checkMail(String cartella) 
{ 
    Object[][] tabella; 
    try 
    { 
     Properties propvals = new Properties(); 
     propvals.put("mail.imaps.host", host); 
     propvals.put("mail.imaps.port", porta); 
     propvals.put("mail.imaps.starttls.enable", "true"); 
     propvals.put("mail.imaps.ssl.trust", "*"); 
     Session emailSessionObj = Session.getDefaultInstance(propvals); 
     //Create IMAP store object and connect with the server 
     Store storeObj = emailSessionObj.getStore("imaps"); 
     storeObj.connect(host, nick, pw); 
     //Create folder object and open it in read-only mode 
     Folder emailFolderObj = storeObj.getFolder(cartella); 
     emailFolderObj.open(Folder.READ_ONLY); 
     //Fetch messages from the folder and print in a loop 
     Message[] messageobjs = emailFolderObj.getMessages(); 
     tabella=new Object[messageobjs.length][6]; 

     for(int i = 1; i <= messageobjs.length; i++) 
     { 
      Message m = messageobjs[i-1]; 
      String mimeType = m.getContentType(); 
      Object[] risultati=new String[6]; 
      risultati[i-1]=m.getFrom()[i-1]; //Here's where I get the Exception 
      risultati[i-1]=m.getSubject(); 
      risultati[i-1]=getTestoDaMessaggio(m); 
      risultati[i-1]=getContoAllegati(m); 
      risultati[i-1]=m.getSentDate(); 
      risultati[i-1]=0; 
      tabella[i-1]=risultati; 
     } 

     emailFolderObj.close(false); 
     storeObj.close(); 
     } 
     catch (Exception exp) 
     { 
      exp.printStackTrace(); 
      tabella=null; 
     } 

     return tabella; 
} 

は、ここで出力です:

java.lang.ArrayStoreException: com.sun.mail.imap.protocol.IMAPAddress 
    at clientemail.ScaricaEmail.checkMail(ScaricaEmail.java:57) 
    at clientemail.Home.initComponents(Home.java:240) 
    at clientemail.Email$4.actionPerformed(Email.java:167) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
    at java.awt.Component.processMouseEvent(Component.java:6525) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6290) 
    at java.awt.Container.processEvent(Container.java:2234) 
    at java.awt.Component.dispatchEventImpl(Component.java:4881) 
    at java.awt.Container.dispatchEventImpl(Container.java:2292) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) 
    at java.awt.Container.dispatchEventImpl(Container.java:2278) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4703) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 

ありがとうございました。

+0

[JavaMail debug output](https://javaee.github.io/javamail/FAQ#debug)の表示内容は何ですか? –

+0

[配列はJavaで統一されています](https://stackoverflow.com/questions/16518556/arrays-are-reified-in-java)の可能な複製 – jmehrens

答えて

0
Object[] risultati=new String[6]; 
    risultati[i-1]=m.getFrom()[i-1]; //Here's where I get the Exception 

Message.getFrom()Address[]を返し、あなたはAddressある最初のインデックスを取得しています。 Addressjava.lang.Stringではないため、String[]には格納できません。

risultati[i-1]=String.valueOf(m.getFrom()[i-1]); 

それとも、配列型に変更することができます::一般的に

Object[] risultati=new Object[6]; 

を、あなたは配列に値を対処避け、ちょうど使用し、それはあなたのような何かを行うことができます動作させるために

メッセージオブジェクト。

関連する問題