0

JavaMail を使用してメールを読み取ろうとすると、このエラーが発生します。このエラーを解決する方法を教えてください。eclipse にactivation.jarmail.jarを追加しました。

DEBUG POP3: server doesn't support TOP, disabling it
javax.mail.AuthenticationFailedException: Command is not valid in this state.
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:174)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at library.VerifyEmail.main(VerifyEmail.java:40)

以下は私が試しているコードです:

package library;

import java.io.IOException;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import com.sun.mail.pop3.POP3Store;

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.search.SubjectTerm;
import javax.activation.*;
import java.io.*;
public class VerifyEmail {
public static void main(String[] args) throws Exception {
     // SUBSTITUTE YOUR ISP's POP3 SERVER HERE!!!
    String host = "myhost";
    // SUBSTITUTE YOUR USERNAME AND PASSWORD TO ACCESS E-MAIL HERE!!!
    String user = "myuser";
    String password = "mypass";

 // Get a session.  Use a blank Properties object.
    Session session = Session.getInstance(new Properties());
    try {
        // Get a Store object
        Store store = session.getStore("pop3");
        store.connect(host, user, password);

        // Get "INBOX"
        Folder fldr = store.getFolder("INBOX");
        fldr.open(Folder.READ_WRITE);
        int count = fldr.getMessageCount();
        System.out.println(count  + " total messages");

        // Message numebers start at 1
        for(int i = 1; i <= count; i++) {
            // Get  a message by its sequence number
            Message m = fldr.getMessage(i);
         // Get some headers
            Date date = m.getSentDate();
            Address [] from = m.getFrom();
            String subj = m.getSubject();
            String mimeType = m.getContentType();
            System.out.println(date + "\t" + from[0] + "\t" +
                                subj + "\t" + mimeType);
        }

    }catch (MessagingException  ioex) {
        ioex.printStackTrace();
    }
}
}
4

3 に答える 3

3

javax.mail.AuthenticationExceptionを取得している場合は、アプリケーションがメール サーバーに対して認証できないことを意味します。

考えられる理由の 1 つは、メール サーバーの SSL 証明書がクライアント キーストアにないことです。

于 2015-08-05T07:48:48.293 に答える
0

Microsoftによると: Exchange 2010 の場合、既定では、サーバーはクライアントが pop3 に ssl を使用する必要があります。SSL がない場合、サーバーは「 ERR command is not valid in this state.」で 応答します。

javamail を ssl で使用する方法は次のとおりです - Javamail と Gmail Pop3 SSL

于 2013-02-25T07:13:41.290 に答える