【问题标题】:javax.mail.MessagingException when attempting to connect to gmail IMAP server尝试连接到 gmail IMAP 服务器时出现 javax.mail.MessagingException
【发布时间】:2020-10-04 14:45:06
【问题描述】:

我正在尝试通过 Gmail imap 协议连接到 gmail 帐户

这是我调用的方法:

public EmailHelper() throws MessagingException, GeneralSecurityException {

        String username = "realemail@gmail.com";
        String password = "emailpassword";
        String server = "imap.gmail.com";

        Properties props = System.getProperties();
        props.setProperty("mail.imap.ssl.enable", "true");
        props.setProperty("mail.store.protocol", "imaps");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        props.put("mail.imaps.ssl.checkserveridentity", "false");
        props.put("mail.imaps.ssl.trust", "*");
        props.put("mail.imaps.ssl.socketFactory", sf);

        Session session = Session.getDefaultInstance(props, null);
        Store store = session.getStore("imaps");


        store.connect(server, username, password);}

这是我得到的例外:

 Exception in thread "main" javax.mail.MessagingException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我已经阅读并尝试了其他问题中发布的解决方案,但它们对我不起作用。我想我错过了什么

我们将不胜感激。谢谢。

【问题讨论】:

    标签: java email smtp jakarta-mail imap


    【解决方案1】:

    经过 3 小时的修补/调试,我终于解决了这个问题。事实证明,avast 导致了这个 SSL 错误,禁用它使代码工作。

    【讨论】:

      【解决方案2】:

      session.getStore("imaps") 是我通常不使用的东西。相反,您可以将协议作为属性的一部分提供。

      我的最佳猜测是您收到错误消息,因为您当时并没有真正连接到谷歌。

      Properties props = new Properties();
      props.setProperty("mail.store.protocol", "imaps");
      props.setProperty("mail.imaps.ssl.enable", "true");
      props.setProperty("mail.imaps.port", "993");
      props.setProperty("mail.imaps.timeout", "10000");
      props.setProperty("mail.imaps.connectiontimeout", "10000");
      
      try {
      
          Session session = Session.getInstance(props, null);
          Store store = session.getStore();
          store.connect("imap.gmail.com", user, password);
          Folder inbox = store.getFolder("INBOX");
      
          System.out.println("Connected!");
      
      } catch(Exception e) {
        e.printStackTrace();
      }
      

      【讨论】:

      • 异常是否告诉您错误的服务器名称?您是否在使用的代码中设置了任何其他系统属性?仅使用我提供的代码,我就可以毫无问题地连接到 Gmail。也许你摆弄了cacerts?
      • 原来 Avast 是所有麻烦的根源。
      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 2023-04-02
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多