2009-08-18 12 views
7

Sto cercando duramente per creare una cartella in IMAP (sto usando gmail)creazione di cartelle in IMAP non funziona

Ecco quello che ho tentato finora:

public boolean createFolder(String folderName) throws MessagingException 
{ 
    store = session.getStore("imap"); 
    System.out.println("connecting store.."); 
    store.connect("imap.gmail.com", 993, "[email protected]", "password"); 
    System.out.println("connected !"); 

    //using store.getDefaultFolder(); shows error : "folder cannot contain messages" 
    Folder defaultFolder = store.getFolder("Inbox"); 

    return createFolder(defaultFolder, folderName); 
} 

private boolean createFolder(Folder parent, String folderName) 
{ 
    boolean isCreated = true; 

    try 
    { 
     parent.open(Folder.READ_WRITE); 
     System.out.println("adding listeners..."); 
     parent.addFolderListener(myMailFolderListener); 
     System.out.println("creating a folder ...."); 
     Folder testFolder = parent.getFolder(folderName); 

     isCreated = testFolder.create(Folder.HOLDS_MESSAGES); 
     System.out.println("created: " + isCreated); 
     parent.close(true); 
    } catch (Exception e) 
    { 
     System.out.println("Error creating folder: " + e.getMessage()); 
     isCreated = false; 
    } 
    return isCreated; 
} 

nomecartella passato: " Test 123"

uscita: cartella viene creata come cartella Posta in arrivo/test123

cosa devo fare in questa linea: cartella defaultFolder = store.getFolder ("Posta in arrivo"); ??

ho anche postato questa stessa domanda qui: http://www.coderanch.com/t/458722/Sockets-Internet-Protocols/java/creating-folders-IMAP-does-not

risposta

13

Ecco il codice corretto:

public boolean createFolder(String folderName) throws MessagingException 
{ 
    store = session.getStore("imap"); 
    System.out.println("connecting store.."); 
    store.connect("imap.gmail.com", 993, "[email protected]", "password"); 
    System.out.println("connected !"); 
    Folder defaultFolder = store.getDefaultFolder(); 
    return createFolder(defaultFolder, folderName); 
} 

/* 
* Note that in Gmail folder hierarchy is not maintained. 
* */ 
private boolean createFolder(Folder parent, String folderName) 
{ 
    boolean isCreated = true; 

    try 
    { 
     Folder newFolder = parent.getFolder(folderName); 
     isCreated = newFolder.create(Folder.HOLDS_MESSAGES); 
     System.out.println("created: " + isCreated); 

    } catch (Exception e) 
    { 
     System.out.println("Error creating folder: " + e.getMessage()); 
     e.printStackTrace(); 
     isCreated = false; 
    } 
    return isCreated; 
}