2011-11-10 75 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); 
} 
相关问题