【问题标题】:Couldn't read a mailbox folder which has '/' in it. I'm using IMAP protocol to read a mail box无法读取其中包含“/”的邮箱文件夹。我正在使用 IMAP 协议读取邮箱
【发布时间】:2018-05-10 22:01:09
【问题描述】:

您好,我正在使用 IMAP 协议连接到邮箱,并使用 java 邮件列出文件夹并处理该文件夹中的邮件。每当邮箱文件夹中包含“/”时,我不会在代码中收到任何错误或异常,而是收到一封错误电子邮件,显示“您的一个或多个文件夹的名称包含字符“/”或超过 250字符。名称中包含此字符的文件夹无法下载到您的 IMAP 电子邮件程序。请重命名这些文件夹: •测试/测试(测试/测试)”

现在如何从我的 java 代码中更改文件夹名称?

这是我在java中使用的代码。

Properties props = System.getProperties();
      props.setProperty("mail.imap.ssl.enable", "true");
      props.setProperty("mail.store.protocol", "imaps");
      props.setProperty("mail.imaps.ssl.trust", "*");
      props.setProperty("mail.imaps.starttls.enable", "true");
      props.setProperty("mail.imap.auth.plain.disable", "true");
      props.setProperty("mail.imap.auth.ntlm.disable", "true");
      props.setProperty("mail.imap.auth.gssapi.disable", "true");
      props.put("mail.debug", "true");

      Session session = Session.getInstance(props, null);
      store = session.getStore("imaps");
      store.connect("**********",993,"User**","Pass****");

      Folder defaultFolder = store.getDefaultFolder();
      System.out.println(defaultFolder.getFullName());

      if (defaultFolder.list().length != 0) {
          System.out.println(ListFolders(defaultFolder.list()));
      }

【问题讨论】:

  • 是否有任何脚本可以重命名包含'/'的文件夹?

标签: java email jakarta-mail imap


【解决方案1】:

如果您收到一封电子邮件,这个问题很可能是您的服务器软件的限制,并且您不会在代码中解决它。看来您必须在 Web 控制台中重命名它,并避免将来创建包含此字符的文件夹。

电子邮件似乎很清楚,服务器不会将其导出到您的客户端,因此您无法更改任何内容。

你的服务器软件是什么?

【讨论】:

  • 我们正在使用 Microsoft Exchange Server。
【解决方案2】:

据我了解,您将看到 IMAP 命名支持(以及许多其他命名标准)的结果。 MAPI 更加慷慨,允许您在命名文件夹时使用一些特殊字符,包括正斜杠。

Javamail 不支持 MAPI,以后也没有打算。如果您想测试理论,您可以尝试使用 java MAPI 库(例如 jmapi)来读取文件夹。那么您不需要重命名文件夹。

【讨论】:

  • 这个 jmapi 在 maven 存储库中可用吗?
  • 它是在一段时间前创建的,似乎处于非活动状态。不幸的是,它不在 maven 或 nexus repo 中。
猜你喜欢
  • 1970-01-01
  • 2020-05-30
  • 2017-05-23
  • 2016-12-01
  • 2011-03-31
  • 1970-01-01
  • 2022-01-17
  • 2015-02-08
  • 2011-05-30
相关资源
最近更新 更多