标签: exchangewebservices

item.HasAttachments 为真但集合中没有附件

我需要从许多邮件项目中检索和复制附件。问题是每个邮件项目的集合都是空的,即使属性 HasAttachment 为真。

我是否需要在检索邮件项目后以某种方式加载每个邮件项目的附件集合?

以下代码抛出异常“索引超出范围。”:

FindItemsResults<Item> findResults = service.FindItems(
                WellKnownFolderName.Inbox,
                new ItemView(1));

foreach (Item item in findResults.Items)
{
    if (item.HasAttachments && item.Attachments[0] is FileAttachment)
    {
         //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

exchangewebservices exchange-server-2010

3
推荐指数
1
解决办法
1444
查看次数

使用 EWS 客户端只读未读邮件

我正在使用 EWS 阅读邮件。

你能告诉我如何只过滤收件箱中的未读邮件吗?

java email jakarta-mail exchangewebservices

3
推荐指数
1
解决办法
2567
查看次数

如何使用 Exchange Web 服务获取真实的电子邮件地址?

我正在尝试使用 Exchange Web 服务获取电子邮件发件人的真实电子邮件地址,但是其中mailitem.Sender.Address包含以下内容 -

/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (...........)/CN=RECIPIENTS/CN=...........-.....

我怎样才能找到这封电子邮件发件人的真实电子邮件地址?

我的代码:

Dim sf As SearchFilter = New SearchFilter.SearchFilterCollection(LogicalOperator.And, New SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, False))
Dim findResults As FindItemsResults(Of Item) = service.FindItems(WellKnownFolderName.Inbox, sf, New ItemView(128))
Dim items As ServiceResponseCollection(Of GetItemResponse) = service.BindToItems(findResults.Select(Function(item) item.Id), New PropertySet(BasePropertySet.FirstClassProperties, EmailMessageSchema.From, EmailMessageSchema.ToRecipients))

For Each itItem As Microsoft.Exchange.WebServices.Data.Item In findResults.Items
      If TypeOf itItem Is EmailMessage Then
            Dim mailItem As EmailMessage = DirectCast(itItem, EmailMessage)
Run Code Online (Sandbox Code Playgroud)

然后我想参考mailItem.Sender.Address,其中包含上述字符串而不是abc@whatever.com

一些示例代码(最好在 中VB.NET)将不胜感激,因为我很难弄清楚这些 Exchange Web 服务是如何工作的。

vb.net exchangewebservices

3
推荐指数
1
解决办法
5250
查看次数

使用 OAuth 的 Office 365/EWS 身份验证

我正在尝试使用 OAuth 和 EWS 托管 API 登录 Office 365 Exchange Online。

我能够使用连接到 Office 365 Web API (REST),因此我确实拥有来自 Active Directory 身份验证库 (ADAL) 的有效令牌。

现在,我正在尝试使用 EWS 和 TokenCredentials 进行连接。

代码很简单,我认为:

public static ExchangeService ConnectToServiceWithImpersonation(string token)
{
    var service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);

    if (true)
    {
        service.TraceListener = new TraceListener();
        service.TraceFlags = TraceFlags.All;
        service.TraceEnabled = true;
    }

    var credentials = new TokenCredentials(token);

    service.Credentials = credentials;

    service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
    return service;
}
Run Code Online (Sandbox Code Playgroud)

令牌由 ADAL 生成,而 ADAL 又来自使用“Office 365 API 工具 - 预览”的示例代码

// Obtain …
Run Code Online (Sandbox Code Playgroud)

c# ms-office exchangewebservices oauth-2.0

3
推荐指数
1
解决办法
1万
查看次数

Exchange Web 服务设置约会的组织者

当我使用服务帐户添加新约会时,组织者始终是 Credentials to Exchange 服务的用户,我想将组织者设置为其他用户,但组织者属性是只读的,我该如何实现?

           var appointment = new Appointment(_service.ExchangeService);
            
            if (exchangeAppointment.Participants.Any() && exchangeAppointment.Participants != null)
            {
                foreach (var participant in exchangeAppointment.Participants)
                {
                    appointment.RequiredAttendees.Add(participant);
                }
            }
            appointment.Resources.Add(exchangeAppointment.RoomAdIdentityEmail);
            appointment.Location = string.Join(",", appointment.Resources);
            appointment.Subject = exchangeAppointment.Subject;
            appointment.Body = exchangeAppointment.Body;
            appointment.Start = exchangeAppointment.StartTime;
            appointment.End = exchangeAppointment.EndTime;
            appointment.Save(SendInvitationsMode.SendToAllAndSaveCopy);
Run Code Online (Sandbox Code Playgroud)

exchangewebservices

3
推荐指数
1
解决办法
3197
查看次数

请求失败,因为 EWS 无法为此请求联系适当的 CAS 服务器

EWS 订阅间歇性丢失。它会抛出以下两个错误。

错误 1 ​​Microsoft.Exchange.WebServices.Data.ServiceResponseException:邮箱数据库暂时不可用。,无法打开邮箱 /o=ExchangeLabs/ou=Exchange 管理组

错误 2 Microsoft.Exchange.WebServices.Data.ServiceResponseException:请求失败,因为 EWS 无法为此请求联系相应的 CAS 服务器。在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest 请求) 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& 请求) 在 Microsoft .Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.SubscribeToStreamingNotifications(IEnumerable1 文件夹 ID、EventType[] 事件类型)

我使用过Exchange 2013交换服务。

ExchangeService exchange = new ExchangeService(ExchangeVersion.Exchange2013);
                exchange.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, _primaryMailbox);
                exchange.HttpHeaders.Add("X-AnchorMailbox", _primaryMailbox);
                exchange.HttpHeaders.Add("X-PreferServerAffinity", "true");
Run Code Online (Sandbox Code Playgroud)

以下是添加订阅的方法。

 ExchangeService exchange = group.ExchangeService;
                exchange.Credentials = new WebCredentials(BCCSettings.ImpersonatedUsername, BCCSettings.ImpersonatedPassword);
                exchange.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, mailbox);

                subscription = exchange.SubscribeToStreamingNotifications(PreparFolders().ToArray(), EventType.NewMail, EventType.Moved);
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

c# exchangewebservices office365

3
推荐指数
1
解决办法
2766
查看次数

Exchange Web 服务 - 尝试读取消息属性时“您必须加载或分配此属性才能读取其值”错误消息

我有一个邮箱,每 5 分钟从远程站收到一封自动电子邮件。该电子邮件中包含一个字符串,需要与前一封电子邮件中的相同字符串进行比较。

出于显而易见的原因,我正在尝试自动化此过程。

到目前为止,我能够阅读ConversationTopic电子邮件,但是,我似乎无法弄清楚如何阅读电子邮件的内容。

当它调用这个时:

email.Load();
MessageBox.Show(email.TextBody.Text.ToString());
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

You must load or assign this property before you can read its value

我有一个谷歌,我找不到任何与我的实例相关的东西,所以任何帮助都会很棒。

到目前为止,这是我的完整代码:

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        //MessageBox.Show("Registering Exchange connection");

        _service = new ExchangeService
        {
            Credentials = new WebCredentials("myaddy@domain.com", "*****")
        };
    }
    catch
    {
        MessageBox.Show("new ExchangeService failed.");
        return;
    }

    // This is the office365 webservice URL
    _service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

    // Prepare seperate class for writing email to the database
    try
    { …
Run Code Online (Sandbox Code Playgroud)

c# exchangewebservices

3
推荐指数
1
解决办法
1986
查看次数

如何在 MSAL .Net C# 中获取刷新令牌

我已经确定了两种在 EWS 的 MSAL 中获取令牌的方法

  1. 采用用户名密码的方式。
  2. 使用守护进程机密方法。

在我获取令牌后的上述两种方法中,我无法刷新它。虽然我尝试遵循 MS 文档但没有成功。GetAccountsAsync() 始终给出空结果。

这是我的用户名密码方法的代码

var publicClientApplication = PublicClientApplicationBuilder.Create(ClientId)
                 .WithAuthority(AzureCloudInstance.AzurePublic, TenantId).Build();
var accounts = publicClientApplication.GetAccountsAsync().GetAwaiter().GetResult();
var result = publicClientApplication
                 .AcquireTokenSilent(scopes, accounts.FirstOrDefault())
                 .ExecuteAsync().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

谁能指导我为什么会这样,或者有没有文档解释这个流程。

c# azure exchangewebservices azure-active-directory azure-ad-msal

3
推荐指数
1
解决办法
8439
查看次数

如何使用Java API在Exchange Server中获取DL?

如何通过Java中的EWS从Microsoft Exchange Server获取DL(分发列表)?

我已经尝试过EWS Java API但找不到Distribution List交换服务器的(GAL)列表,任何有关此API或任何其他API的帮助都将不胜感激.

java soap exchange-server exchangewebservices ewsjavaapi

2
推荐指数
1
解决办法
1714
查看次数

Exchange Web服务附件集合为空

有没有人在电子邮件附件集合为空的EWS(Exchange 2010 SP1)中遇到问题?

该电子邮件有5个附件(一些.tif和一些.pdf).我的代码看起来像:

if (email is EmailMessage && email.HasAttachments)
{
    foreach (Attachment attachment in email.Attachments)
    {...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有什么明显的东西让我失踪吗?

c# exchange-server exchangewebservices

2
推荐指数
1
解决办法
868
查看次数