首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java读取非默认邮箱

Java读取非默认邮箱
EN

Stack Overflow用户
提问于 2013-08-13 08:06:12
回答 2查看 5.3K关注 0票数 1

我想用Java在exchange服务器上读取一个非默认邮箱,但是我的代码有问题。以下是有关部分的摘录:

代码语言:javascript
运行
复制
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
ExchangeCredentials credentials = new WebCredentials("<user>", "<pass>");
service.setCredentials(credentials);
service.setUrl(new URI("https://<URL>/EWS/Exchange.asmx"));
ItemView iview = new ItemView(3);
Mailbox mb = new Mailbox();
mb.setAddress("<mailbox_address>");
FolderId folderId = new FolderId(WellKnownFolderName.Root, mb);
FindItemsResults<Item> findResults = service.findItems(folderId, iview);

错误信息是:

代码语言:javascript
运行
复制
Exception in thread "main" microsoft.exchange.webservices.data.EWSHttpException: Connection not established
    at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(Unknown Source)
    at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseHeaders(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(Unknown Source)
    at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(Unknown Source)
    at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)
    at microsoft.exchange.webservices.data.ExchangeService.findItems(Unknown Source)

顺便说一句。我可以读我的默认邮箱,发送电子邮件,等等.

你能告诉我吗?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2013-08-13 13:45:21

我相信您正在尝试访问一个邮箱,但使用另一个帐户的凭据。这可以通过模仿来解决。

在较新版本的EWS中,可以解决在交换服务器上的AD中通过编程方式设置ConnectingSID属性问题。我可能会选择第二个地址,并将主SMTP地址配置到不同的环境中。

下面是一个在C#中使用EWS 2010的代码示例,因此您可能不得不使用setCredentials(credentials),等等:

代码示例EWS 2010

代码语言:javascript
运行
复制
ExchangeServiceBinding binding = new ExchangeServiceBinding();
// Use this class instead of ExchangeService (!)
binding.Credentials = credentials;  
// etc    

binding.ExchangeImpersonation = new ExchangeImpersonationType();
binding.ExchangeImpersonation.ConnectingSID = new ConnectingSIDType();
binding.ExchangeImpersonation.ConnectingSID.PrimarySmtpAddress = "<mailbox_address>";

EWS 2007的文档

据SP1称,这似乎也可以在EWS 2007的这篇文章中使用。请从这篇文章中注意到:

您必须设置为权限“ms-Exch-EPI-模拟”必须在服务帐户的客户端访问服务器上进行模拟。此外,服务帐户必须在它将模拟的每个邮箱上授予它“ms-Exch-EPI-5月-模拟”的权限。如果要在存储、存储组、服务器或组织级别设置此权限,则该权限将继承到邮箱中。

票数 0
EN

Stack Overflow用户

发布于 2020-07-04 05:28:44

此代码似乎是正确的,如果此代码适用于默认邮箱,则可能是某些权限错误。

我使用类似的代码来访问共享邮件组的邮件。

我看到的唯一不同是WellKnownFolderName.MsgFolderRoot而不是WellKnownFolderName.Root

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18203782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档