如何使用java Mail从POP3获取消息ID

时间:2017-01-31 11:04:52

标签: java email javamail pop3

来自网址

  

https://javamail.java.net/nonav/docs/api/com/sun/mail/pop3/package-summary.html

您还可以预先获取所有消息的所有UID:

FetchProfile fp = new FetchProfile();
fp.add(UIDFolder.FetchProfileItem.UID);
folder.fetch(folder.getMessages(), fp);

然后使用上面的技术获取每条消息的UID。这与IMAP支持的UIDFolder接口使用的技术类似,但请注意,POP3 UID是字符串,而不是像IMAP UID这样的整数。有关详细信息,请参阅POP3规范。

由此,https://www.ietf.org/rfc/rfc1939.txt,

在第7号中,有一个我需要的例子。

示例:

         S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
         C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
         S: +OK maildrop has 1 message (369 octets)

         In this example, the shared  secret  is  the  string  `tan-
         staaf'.  Hence, the MD5 algorithm is applied to the string

            <1896.697170952@dbc.mtview.ca.us>tanstaaf

         which produces a digest value of

            c4c9334bac560ecc979e58001b3e22fb //this is what we need in Java

在此之后,我们如何获取每条消息的MessageID / UID?

我需要的示例消息ID。不推荐使用的fuego.mail库之前提供了这个:

<F855F5879C6E754E9DE37F2E7D0762327C942B43@GADC-EMB099.ap.abc‌​.com> 

更新 我有一个3位整数,即使用此

时为561
Store store = emailSession.getStore(MAILSTORETYPE);

            store.connect(HOST, USERNAME, PASSWORD);

            Folder emailFolder = store.getFolder("INBOX");
            emailFolder.open(Folder.READ_ONLY);

            FetchProfile fp = new FetchProfile();
            fp.add(UIDFolder.FetchProfileItem.UID);
            emailFolder.fetch(emailFolder.getMessages(), fp);

            POP3Folder pf =(POP3Folder)emailFolder;         

            Message[] messages = emailFolder.getMessages();

            for (int i = 0, n = messages.length; i < n; i++) {
                Message message = messages[i];

                    String uid = pf.getUID(message);
                    System.out.println(uid);

0 个答案:

没有答案