2016-09-11 4 views
0

テストの理由から、私は毎日電子メールアカウントを空にしたい、私はこのコードを持っているが電子メールを削除しない。Java Mail Api、Gmailからのメールを削除する

public class EmailService { 

    private String HOST = "imap.gmail.com"; 
    private String USERNAME = "[email protected]"; 
    private String PASSWORD = "pass"; 
    private Properties properties; 
    private Store store; 
    private Folder inbox; 

    public EmailService() throws MessagingException { 
    this.properties = new Properties(); 
    this.properties.put("mail.imap.host", HOST); 
    this.properties.put("mail.imap.port", "993"); 
    this.properties.put("mail.imap.starttls.enable", "true"); 
    } 

    public void openEmailSession() throws MessagingException, InterruptedException { 
    Session emailSession = Session.getInstance(this.properties); 
    emailSession.setDebug(true); 
    this.store = emailSession.getStore("imaps"); 
    this.store.connect(HOST, USERNAME, PASSWORD); 

    this.inbox = this.store.getFolder("INBOX"); 
    this.inbox.open(Folder.READ_WRITE); 
    } 

    public void closeEmailSession() throws MessagingException, IOException { 
    this.inbox.close(true); 
    this.store.close(); 
    } 

    public Message[] getUserMessages() throws MessagingException, IOException { 
    Message[] messages = this.inbox.getMessages(); 
    return messages; 
    } 

    public void cleanInbox() throws IOException, MessagingException { 
    Message[] messages = this.getUserMessages(); 
    for (Message message :messages) { 
     message.setFlag(Flags.Flag.DELETED, true); 
    } 
    } 
} 

私が実行した場合:

emailService.openEmailSession(); 
emailService.cleanInbox(); 
emailService.closeEmailSession(); 

メールは受信トレイから消えたが、その後、私はまだそこにすべてのメールや電子メールをクリックして、ごみ箱は空です。私は何が起こっているのか分かりません。 「メール転送とPOP/IMAP」のGmailの設定で

は、私はすでにオン/オフし、「最後の目に見えるIMAPフォルダから削除と抹消などのメッセージがマークされている場合」の3つのオプション

をautoexpungeを試みたが、何も変わらない...私は行方不明だ?

編集:[Gmailの] /すべてのメール

DEBUG: setDebug: JavaMail version 1.5.6 
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle] 
DEBUG IMAPS: mail.imap.fetchsize: 16384 
DEBUG IMAPS: mail.imap.ignorebodystructuresize: false 
DEBUG IMAPS: mail.imap.statuscachetimeout: 1000 
DEBUG IMAPS: mail.imap.appendbuffersize: -1 
DEBUG IMAPS: mail.imap.minidletime: 10 
DEBUG IMAPS: trying to connect to host "imap.gmail.com", port 993, isSSL true 
* OK Gimap ready for requests from 46.25.184.193 f20mb151859057edc 
A0 CAPABILITY 
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER AUTH=XOAUTH 
A0 OK Thats all she wrote! f20mb151859057edc 
DEBUG IMAPS: AUTH: XOAUTH2 
DEBUG IMAPS: AUTH: PLAIN 
DEBUG IMAPS: AUTH: PLAIN-CLIENTTOKEN 
DEBUG IMAPS: AUTH: OAUTHBEARER 
DEBUG IMAPS: AUTH: XOAUTH 
DEBUG IMAPS: protocolConnect login, host=imap.gmail.com, [email protected], password=<non-null> 
DEBUG IMAPS: AUTHENTICATE PLAIN command trace suppressed 
DEBUG IMAPS: AUTHENTICATE PLAIN command result: A1 OK [email protected] authenticated (Success) 
A2 CAPABILITY 
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- APPENDLIMIT=35651584 
A2 OK Success 
DEBUG IMAPS: connection available -- size: 1 
A3 SELECT "[Gmail]/All Mail" 
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing) 
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen $NotPhishing $Phishing \*)] Flags permitted. 
* OK [UIDVALIDITY 11] UIDs valid. 
* 10 EXISTS 
* 0 RECENT 
* OK [UIDNEXT 3903] Predicted next UID. 
* OK [HIGHESTMODSEQ 101809] 
A3 OK [READ-WRITE] [Gmail]/All Mail selected. (Success) 
A4 STORE 1 +FLAGS (\Deleted) 
* 1 FETCH (FLAGS (\Seen \Deleted)) 
A4 OK Success 
A5 STORE 2 +FLAGS (\Deleted) 
* 2 FETCH (FLAGS (\Deleted)) 
A5 OK Success 
A6 STORE 3 +FLAGS (\Deleted) 
* 3 FETCH (FLAGS (\Seen \Deleted)) 
A6 OK Success 
A13 OK Success 
A14 CLOSE 
A14 OK Returned to authenticated state. (Success) 
DEBUG IMAPS: added an Authenticated connection -- size: 1 
A15 LOGOUT 
* BYE LOGOUT Requested 
A15 OK 73 good day (Success) 
DEBUG IMAPS: IMAPStore connection dead 
DEBUG IMAPS: IMAPStore cleanup, force false 
DEBUG IMAPS: IMAPStore cleanup done 
+0

[JavaMailデバッグ出力](http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)とは何ですか? –

+0

元の質問をデバッグ出力で更新しました。 – FranAguiar

+0

IMAPに関しては、Gmailは少し奇妙です。私が理解しているように、削除されたメッセージはゴミ箱に移動されます。メッセージを削除するには、メッセージをゴミ箱から削除する必要があります。 「すべてのメール」を見ると、メッセージはそこにあります。なぜなら、それはすべてのメールです**!あなたがそれらを削除した後にINBOXから消えていなければ、それはより大きな問題です。 –

答えて

0

のデバッグ出力は、私は別の解決策を見つけ、(ジェンキンス統合)私の目的のために最善ではありませんが、今のところ動作します。

Googleスクリプトではとてもシンプルな機能ですが、メールを選択して必要な機能をスケジュールすることができます。あなたが最初にそれはすぐに現在のフォルダから抹消されることになりますフォルダ[Gmail]/Trashにメッセージをコピーする必要が

https://www.google.com/script/start/

function cleanInbox() { 
    var threads = GmailApp.search('label:inbox'); 
    for (var i = 0; i < threads.length; i++) { 
    threads[i].moveToTrash(); 
    } 
} 
1

。その後、[Gmail]/Trashを開いてメッセージを削除する必要があります。それはメッセージを良いものにしてくれるでしょう。

この情報をJavaMail FAQに追加しました。

関連する問題