【问题标题】:Unable to access shared mailbox of outlook with Java IMAPS无法使用 Java IMAPS 访问 Outlook 的共享邮箱
【发布时间】:2023-03-11 02:00:01
【问题描述】:

当我尝试访问我的邮箱时

store.connect("imaps store address", 993, "someone@domain.com","PASSWORD");

我可以访问邮箱。但是当我尝试如下:

store.connect("imaps store address", 993, "someone@domain.com/sharedmailbox_name","PASSWORD");

store.connect("imaps store address", 993, "someone@domain.com/sharedmailbox_name@domain.com","PASSWORD");

我收到此错误:

连接到 IMAP 服务器...javax.mail.AuthenticationFailedException: AUTHENTICATE 失败。 在 com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:725) 在 javax.mail.Service.connect(Service.java:366) 在 pkg.finale.test.CheckOutlook.initiate(CheckOutlook.java:38) 在 pkg.finale.test.CheckOutlook.main(CheckOutlook.java:17)

代码如下:

import java.util.Properties;

public class CheckOutlook {

    public static void main(String[] args) {
        initiate();
    }

public static void initiate(){         
    try {
        Properties properties = System.getProperties();
        properties.setProperty("mail.imaps.auth.ntlm.disable", "false");
        properties.setProperty("mail.protocol.ssl.trust", "true");
        properties.put("mail.imap.starttls.enable", "true");
        Session session = Session.getInstance(properties, null);

        System.out.print("Connecting to the IMAP server...");

        String storeName = "imaps";
        Store store = session.getStore(storeName);
        store.connect("imaps store address", 993,"someone@domain.com/SharedMailboxName","Password");

        System.out.println("Connected To server: Done!");
        Folder[] f = store.getDefaultFolder().list();
        for(Folder fd:f)
               System.out.println(">> "+fd.getName());
        System.out.println();
           Folder inbox = store.getFolder("inbox");
           inbox.open(Folder.READ_WRITE);
           Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
       }
       catch(Exception E){
           E.printStackTrace();
       }
   }

【问题讨论】:

  • 这个 Outlook 相关吗?
  • 我将您的问题陈述移到您的代码块之前。使用一些上下文来消化代码通常更容易。
  • 是的,我正在尝试连接到 Microsoft Exchange Outlook。我仍然有问题。
  • Outlook 是一个邮件客户端,您将它与 Exchange(Microsoft 邮件服务器)混淆了。

标签: java jakarta-mail exchange-server


【解决方案1】:

最后我用 EWS Api 破解了它。

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
String username = "username@domain.com";
ExchangeCredentials credentials = new WebCredentials(username,Password);
service.setCredentials(credentials);
service.autodiscoverUrl(username);
ItemView view = new ItemView (10);
Mailbox mb = new Mailbox();
mb.setAddress("sharedmailboxname@domain.com");
FolderId folderId = new FolderId(WellKnownFolderName.Inbox, mb);
FindItemsResults<Item> findResults = service.findItems( folderId, view);
for (Item item1 : findResults.getItems()) {
  item1.load();
  System.out.println(item1.getSubject());
}

【讨论】:

  • @Brama :你能帮我从公共文件夹中获取文件夹吗?当我尝试替换代码中的行时,出现“没有可用的公用文件夹服务器”的错误 FolderId folderId = new FolderId(WellKnownFolderName.Inbox, mb); with FolderId folderId = new FolderId(WellKnownFolderName.PublicFoldersRoot, mb);
猜你喜欢
  • 2017-05-23
  • 2018-11-20
  • 2012-11-04
  • 1970-01-01
  • 2022-08-20
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
相关资源
最近更新 更多