SpringBootApplication无法通过pop3获取邮件?

问题描述 投票:0回答:0

我正在制作一个使用 Spring Scheduler 定期收集和保存邮件的程序。 下面是调度程序部分的代码。


@Service
@RequiredArgsConstructor
public class Scheduler {

  private final MailService mailService;


  @Scheduled(cron = "0 0/1 * * * *")
  public void getMail() throws Exception {
    mailService.getMail("pop.gmail.com","username","password");
  }

这是

MailService
里面的一个函数。

public void getMail(String host, String username, String password) throws Exception {
    System.out.println("host = " + host);
    System.out.println("username = " + username);
    System.out.println("password = " + password);
    Properties pop3Props = new Properties();
    pop3Props.setProperty("mail.store.protocol", "pop3");
    pop3Props.setProperty("mail.pop3.host", host);
    pop3Props.setProperty("mail.pop3.port", "995");
    pop3Props.setProperty("mail.debug", "true");

    pop3Props.setProperty("mail.pop3.starttls.enable", "true");
    pop3Props.setProperty("mail.pop3.socketFactory.class", SSLSocketFactory.class.getName());

    Session session = Session.getDefaultInstance(pop3Props);
    Store store = session.getStore("pop3");
    store.connect(username, password);

    Folder inbox = store.getFolder("INBOX");
    inbox.open(Folder.READ_WRITE);

    javax.mail.Message[] messages = inbox.getMessages();
    File directory = new File("mail");
    directory.mkdirs();

    for (javax.mail.Message message : messages) {
      String subject = message.getSubject().replaceAll("/", "");
      message.writeTo(new FileOutputStream("mail/" + subject + ".eml"));
    }

    inbox.close(false);
    store.close();
}

如果你把那个函数的内容写在里面,pop3正常工作,但是

javax.mail.AuthenticationFailedException:连接失败

发生在spring Scheduler中。可能是什么原因?

我也问了 chatGPT 并用谷歌搜索,但找不到它。

java spring email scheduler pop3
© www.soinside.com 2019 - 2024. All rights reserved.