作者:jeru   主页:http://   发布方式:转载
Question  How do you delete a message from the mail server?  
Derived from  An unanswered question originally posed by Benjamin Alejandro Rodriguez Rengifo  
Topics  Java:API:JavaMail:IMAP4, Java:API:JavaMail:POP3  
Author  John Zukowski  
Created  23-Feb-00  Modified  25-Jul-00  
Answer The basic process of deleting a message is to call setFlag() on the message and set the Flags.Flag.DELETED flag to true.message.setFlag(Flags.Flag.DELETED, true);Then, when you close the folder, deleted messages will be removed.Be sure to open the folder for read/write access:folder.open(Folder.READ_WRITE);The following program demonstrates listing each message in the folder and prompting for deletion:import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;public class DeleteMessageExample {
  public static void main (String args[]) throws Exception {
    String host = args[0];
    String username = args[1];
    String password = args[2];    // Get session
    Session session = Session.getInstance(
      System.getProperties(), null);    // Get the store
    Store store = session.getStore("pop3");
    store.connect(host, username, password);    // Get folder
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_WRITE);    BufferedReader reader = new BufferedReader (
      new InputStreamReader(System.in));    // Get directory
    Message message[] = folder.getMessages();
    for (int i=0, n=message.length; i<n; i++) {
       System.out.println(i + ": " + message[i].getFrom()[0] 
         + "\t" + message[i].getSubject());       System.out.println("Do you want to delete message? [YES to delete]");
       String line = reader.readLine();
       // Mark as deleted if appropriate
       if ("YES".equals(line)) {
         message[i].setFlag(Flags.Flag.DELETED, true);
       }
    }    // Close connection 
    folder.close(true);
    store.close();
  }
}You can also expunge() the Folder. However, the POP3 server from Sun does not support this operation.  

解决方案 »

  1.   

    在JavaMail API中定義了四個主要元件:Message:定址資訊、郵件訊息的內容型態等屬性 
    Folder:提取、備份、附加與刪除訊息的方法 
    Store:保存資料夾與包含在資料夾中的訊息 
    Session:使用者驗證
      

  2.   

    baitianhai(hong):
    谢谢,可是我朋友那里用的是POP3 server
    说什么邮件是“只读”的
    有没有什么解决方法呀
      

  3.   

    http://cn.sun.com/developers/onlineTraining/JavaMail/#JavaMailDeleting
      

  4.   

    http://www.jguru.com/faq/view.jsp?EID=17035
    请看这里最后的一句话
    You can also expunge() the Folder. However, the POP3 server from Sun does not support this operation.
      

  5.   

    所以还是可以用的,当你对消息做了删除标记后
    用  Folder.close(true); 就可以删除了
      

  6.   

    谢谢你,baitianhai(hong)
    我让我朋友继续试试
    如果还有不懂的地方再继续向您请教
    结贴