1

このコード サンプルを使用して、Imap でメールを受信できます。

URLName server = new URLName("imaps://" + username + ":"+ password + "@imap.gmail.com/INBOX");
    Session session = Session.getDefaultInstance(new Properties(), null);
    Folder folder = session.getFolder(server);
if (folder == null) 
{
    System.exit(0);
}
   folder.open(Folder.READ_ONLY);
   Message[] messages = folder.getMessages();

しかし、Imap がサービスを提供しない場合があり、そのときは Pop を使用したいのですが、自分のコードでは使用できませんでした。受信メールを使用するための他のコードとは異なります。しかし、Android ではこのコードだけが機能しています。

Pop を使用するには、このコードで何を変更する必要がありますか?

4

2 に答える 2

1

まず、すべてのコンポーネントを個別のパラメーターとして受け取る優れた URLName コンストラクターがあるため、文字列を連結する必要はありません。

IMAP から POP3 に切り替えるには、プロトコル名とホスト名を変更する必要があります。例については、 JavaMail FAQを参照してください。プロトコル名は「pop3s」、ホスト名は「pop.gmail.com」です。

最後に、Session.getDefaultInstance の代わりに Session.getInstance を使用する必要があります。2 つのメソッドの javadoc を比較して、その理由を理解してください。

于 2012-04-25T22:14:57.653 に答える
0

これはどうですか。本当に私のために働いた!!(出典:ここ

            String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";

    Properties pop3Props = new Properties();

    pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
    pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
    pop3Props.setProperty("mail.pop3.port", "995");
    pop3Props.setProperty("mail.pop3.socketFactory.port", "995");

    URLName url = new URLName("pop3", "pop.gmail.com", 995, "","youremailid@gmail.com",yourpassword);
    Session session = Session.getInstance(pop3Props, null);
    Store store = new POP3SSLStore(session, url);
    try {
        store.connect();
    } catch (MessagingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    Folder folder = null;
    try {
        folder = store.getDefaultFolder();

        folder = folder.getFolder("INBOX");

    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (folder == null) {
        System.exit(0);
    }
    try {
        folder.open(Folder.READ_ONLY);
    } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

ストアオブジェクトを介してフォルダを取得してみてください。また、取得するフォルダがINBOXであることも伝えてください。また、設定では、ポート番号は995フォームポップであることに注意してください(最初の6行はそのままにしておいてかまいません)。

于 2012-04-26T05:18:47.170 に答える