使用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 - 开启两步验证的邮箱,不能直接使用登录密码,需要前往邮箱后台生成应用专用密码
- 不同邮箱的IMAP主机地址不同,比如Gmail是
- 核心步骤拆解:
- 通过
Properties配置邮件服务器的连接参数 - 创建
Session实例作为JavaMail的核心运行上下文 - 获取
Store对象并通过账号密码完成服务器连接 - 打开
INBOX文件夹,读取其中的邮件列表 - 遍历邮件对象,提取主题、发件人、发送时间等基础信息,如需正文可调用
message.getContent()
- 通过
内容的提问来源于stack exchange,提问作者user2149122
相关产品推荐
相关产品推荐

