You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java无法从Gmail检索邮件的技术求助

实现Java简易程序查看邮箱收件箱

我帮你完善并整理了这个Java查看邮箱收件箱的程序,结合主流的JavaMail实现方案,完整可运行的代码和关键细节说明如下:

完整实现代码

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 javax.mail.Store;
import javax.mail.internet.InternetAddress;

public class EmailInboxReader {

    public static void main(String[] args) {
        // 邮箱配置信息,替换成你自己的账号信息
        String email = "your-email@example.com";
        String password = "your-app-password"; // 注意:开启两步验证的邮箱需用应用专用密码
        String host = "imap.example.com"; // 示例:imap.gmail.com、imap.qq.com
        String port = "993"; // IMAP SSL协议默认端口
        String protocol = "imap";

        // 配置邮件连接参数
        Properties props = new Properties();
        props.put("mail." + protocol + ".host", host);
        props.put("mail." + protocol + ".port", port);
        props.put("mail." + protocol + ".ssl.enable", "true"); // 启用SSL加密连接
        props.put("mail." + protocol + ".auth", "true"); // 开启身份验证

        try {
            // 获取JavaMail核心会话实例
            Session session = Session.getDefaultInstance(props);
            // 获取邮件存储对象并连接服务器
            Store store = session.getStore(protocol);
            store.connect(email, password);

            // 打开收件箱(Folder.READ_ONLY表示只读模式,避免误操作)
            Folder inbox = store.getFolder("INBOX");
            inbox.open(Folder.READ_ONLY);

            // 获取收件箱内所有邮件
            Message[] messages = inbox.getMessages();
            System.out.println("收件箱共有 " + messages.length + " 封邮件");

            // 遍历邮件并打印关键信息
            for (int i = 0; i < messages.length; i++) {
                Message message = messages[i];
                System.out.println("\n--- 第 " + (i + 1) + " 封邮件 ---");
                System.out.println("主题: " + message.getSubject());
                System.out.println("发件人: " + InternetAddress.toString(message.getFrom()));
                System.out.println("发送时间: " + message.getSentDate());
                // 如需读取邮件正文,可调用 message.getContent() 方法
            }

            // 关闭资源,释放连接
            inbox.close(false);
            store.close();

        } catch (NoSuchProviderException e) {
            System.err.println("不支持指定的邮件协议: " + protocol);
            e.printStackTrace();
        } catch (MessagingException e) {
            System.err.println("邮件操作过程中出现错误");
            e.printStackTrace();
        }
    }
}

关键细节说明

  • 依赖准备:这个程序依赖JavaMail API,若使用Maven管理项目,可在pom.xml中添加以下依赖:
    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>javax.mail</artifactId>
        <version>1.6.2</version>
    </dependency>
    
  • 配置注意事项:
    • 不同邮箱的IMAP主机地址不同,比如Gmail是imap.gmail.com,QQ邮箱是imap.qq.com
    • 开启两步验证的邮箱,不能直接使用登录密码,需要前往邮箱后台生成应用专用密码
  • 核心步骤拆解:
    1. 通过Properties配置邮件服务器的连接参数
    2. 创建Session实例作为JavaMail的核心运行上下文
    3. 获取Store对象并通过账号密码完成服务器连接
    4. 打开INBOX文件夹,读取其中的邮件列表
    5. 遍历邮件对象,提取主题、发件人、发送时间等基础信息,如需正文可调用message.getContent()

内容的提问来源于stack exchange,提问作者user2149122

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:18:33