2011-11-10 73 views
1

我有一個使用javax.mail作爲POP3客戶端的java程序。我能夠列出並檢索Gmail收件箱的內容沒有問題。但是,我似乎無法刪除電子郵件。下面是代碼(的重要組成部分):使用Java郵件Pop3似乎無法刪除Gmail中的電子郵件

POP3Store sto=... another method creates and connects the POP3Store 
Folder ibx=sto.getFolder("INBOX"); 
ibx.open(Folder.READ_WRITE); 

Message[] msgarr=ibx.getMessages(); 

for(int mi=0; mi<msgarr.length; mi++) { 
    ...do stuff with the message 
    msgarr[mi].setFlag(Flags.Flag.DELETED, true); 
    } 
ibx.close(true); //folder.close(true) indicates to expunge the folder 
sto.close(); 

運行此,看到它處理每個消息後,我去到Gmail和電子郵件仍然存在,甚至顯示爲未讀。如果我重新運行java客戶端,它將看到並處理相同的電子郵件。

這個相同的代碼快樂地從交換服務器刪除電子郵件。

如何讓Gmail刪除電子郵件?

回答

6

Gmail專門處理POP刪除。

您可以配置在Gmail設置Forwarding and POP/IMAP選項卡上通過POP刪除郵件時Gmail應該執行的操作。

+1

噢使用Gmail!其實我以前就知道這個!謝謝 – jlarson

1

正如SLaks所說,Gmail是一種特殊情況,它有自己的控制刪除的設置,可以覆蓋客戶想要做的任何事情。

它可以在Forwarding and POP/IMAP

編輯但是,我想補充的是,一個消息被認爲是「下載」通過Gmail,您需要先檢索的每個消息的內容,並在的情況下,多部分消息類型,消息中每個部分的內容。

下面是一些示例代碼,我使用強制不需要的郵件刪除來自Gmail:

// Grab the content to get the email off the server 
// folder is of type javax.mail.Folder and is already in the correct state to get messages from the mail store (Gmail) 
Message msg = folder.getMessage(1); 
Multipart multipart = (Multipart) msg.getContent(); 
int partcount = multipart.getCount(); 
for (int count = 0; count < partcount; count++) { 
    multipart.getBodyPart(count); 
} 
相關問題