Java邮件客户端无法从Gmail账户加载邮件问题排查
Spring Gmail IMAP服务无法加载邮件问题
我使用Spring Framework实现了一个从Gmail账户加载未读邮件的服务,代码如下:
@Scheduled(fixedRate = 60000) public void readEmails() { // TODO: load contact emails from database List<ContactEmailAccount> ContactEmailAccounts = List.of( new ContactEmailAccount("imap.gmail.com", "zhazi@mycompany.com", "abc@123") ); for (ContactEmailAccount account : ContactEmailAccounts) { executorService.submit(() -> fetchEmails(account)); } } @Async public void fetchEmails(ContactEmailAccount account) { Properties properties = new Properties(); properties.put("mail.store.protocol", "imaps"); properties.put("mail.imap.host", account.getServiceProviderHost()); properties.put("mail.imap.port", IMAP_PORT); System.out.println("www -> Reading emails from " + account.getUsername()); try { Session emailSession = Session.getInstance(properties); emailSession.setDebugOut(System.err); // Change debug output to System.err emailSession.setDebug(true); Store store = emailSession.getStore("imaps"); System.out.println("Connecting to IMAP store..."); store.connect(account.getServiceProviderHost(), account.getUsername(), account.getPassword()); System.out.println("Connected to IMAP store."); Folder emailFolder = store.getFolder("INBOX"); System.out.println("Opening Inbox folder..."); emailFolder.open(Folder.READ_ONLY); if (!emailFolder.exists()) { System.out.println("Folder does not exist!"); return; } Message[] messages = emailFolder.getMessages(); System.out.println("www -> Total messages in INBOX: " + messages.length); for (Message message : messages) { EmailRequest emailRequest = new EmailRequest(); emailRequest.setSenderEmail(message.getFrom()[0].toString()); emailRequest.setReceiverEmail(message.getAllRecipients()[0].toString()); emailRequest.setReceivedTimestamp(LocalDateTime.parse(message.getReceivedDate().toString())); emailRequest.setMessageId(message.getHeader("Message-ID")[0]); emailRequest.setInReplyTo(message.getHeader("In-Reply-To") != null ? message.getHeader("In-Reply-To")[0] : null); emailRequest.setReferences(message.getHeader("References") != null ? new ArrayList<>(Arrays.asList(message.getHeader("References"))) : null); emailRequest.setEmailBody(message.getContent().toString()); System.out.println("www -> email received " + emailRequest.getEmailBody()); // Add attachments if needed kafkaTemplate.send(KAFKA_TOPIC_EMAIL_INCOMING, emailRequest); } emailFolder.close(false); store.close(); } catch (Exception e) { System.err.println("Error while connecting to IMAP store: " + e.getMessage()); e.printStackTrace(); } }
但邮件无法加载,我添加了大量日志,却仅能看到以下日志:
www -> Reading emails from zhazi@mycompany.com
后续日志(如"Connecting to IMAP store...")均未输出。
备注:
- 已在Gmail账户中启用IMAP选项;
- 收件箱中有2封新邮件;
- 执行
telnet imap.gmail.com 993可连通,结果如下:
(base) [~] $ telnet imap.gmail.com 993 Trying 142.251.2.109... Connected to imap.gmail.com. Escape character is '^]'. Connection closed by foreign host.
内容的提问来源于stack exchange,提问作者Laodao
相关产品推荐
相关产品推荐

