2009-08-18 4 views
7

Je suis en train difficile de créer un dossier dans IMAP (j'utilise gmail)la création de dossiers dans IMAP ne fonctionne pas

Voici ce que j'ai essayé jusqu'à présent:

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; 
} 

foldername passé: " Test 123"

sortie: dossier est créé sous la boîte de réception/test123

que dois-je faire dans cette ligne: dossier defaultFolder = store.getFolder ("Boîte de réception"); ??

J'ai également posté cette même question ici: http://www.coderanch.com/t/458722/Sockets-Internet-Protocols/java/creating-folders-IMAP-does-not

Répondre

13

Voici le code correct:

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; 
}