Java如何使用POP3接收邮件?

在此示例中,您将学习如何使用POP3接收电子邮件。我们将连接到Gmail服务器并阅读INBOX文件夹中的邮件。您需要执行一些步骤来下载此电子邮件。步骤如下:

  1. 邮件会话的设置属性。

  2. 创建一个javax.mail.Authenticator对象。

  3. 创建邮件会话。

  4. 获取POP3商店提供程序并连接到商店。

  5. 获取文件夹,然后在商店中打开INBOX文件夹。

  6. 从文件夹中检索消息。

  7. 关闭文件夹并关闭存储。

这些步骤可以编写为以下代码段:

package org.nhooo.example.mail;

import javax.mail.*;
import java.util.Properties;

public class ReadEmail {
    public static final String USERNAME = "nhooo";
    public static final String PASSWORD = "**********";

    public static void main(String[] args) throws Exception {
        // 1.设置邮件会话的属性。
        Properties props = new Properties();
        props.put("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.pop3.socketFactory.fallback", "false");
        props.put("mail.pop3.socketFactory.port", "995");
        props.put("mail.pop3.port", "995");
        props.put("mail.pop3.host", "pop.gmail.com");
        props.put("mail.pop3.user", ReadEmail.USERNAME);
        props.put("mail.store.protocol", "pop3");

        // 2.创建一个javax.mail.Authenticator对象。
        Authenticator auth = new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(ReadEmail.USERNAME, ReadEmail.PASSWORD);
            }
        };

        // 3.创建邮件会话。
        Session session = Session.getDefaultInstance(props, auth);

        // 4.获取POP3商店提供程序并连接到商店。
        Store store = session.getStore("pop3");
        store.connect("pop.gmail.com", ReadEmail.USERNAME, ReadEmail.PASSWORD);

        // 5.获取文件夹,然后在商店中打开INBOX文件夹。
        Folder inbox = store.getFolder("INBOX");
        inbox.open(Folder.READ_ONLY);

        // 6.从文件夹中检索消息。
        Message[] messages = inbox.getMessages();
        for (Message message : messages) {
            message.writeTo(System.out);
        }

        // 7.关闭文件夹并关闭存储。
        inbox.close(false);
        store.close();
    }
}

Maven依赖

<!-- http://repo1.maven.org/maven2/javax/mail/javax.mail-api/1.5.6/javax.mail-api-1.5.6.jar -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>javax.mail-api</artifactId>
    <version>1.5.6</version>
</dependency>
<!-- http://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar -->
<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>