【问题标题】:How to download >1 MB Email attachment using EWS in C#如何在 C# 中使用 EWS 下载 >1 MB 的电子邮件附件
【发布时间】:2015-06-15 16:19:53
【问题描述】:

我需要使用 Exchange Web Service API 2.1 从 Exchange Server 下载电子邮件附件 我试过 FindItemResults。可以下载文件的最小大小。但是,如果文件大小超过 1 MB(我尝试使用 2MB 文件)。它需要更多时间并抛出 Time expired 异常。我知道为什么会出现这个异常。但我的问题是, 我可以下载大尺寸的附件吗?

【问题讨论】:

    标签: c# exchange-server exchangewebservices exchange-server-2010


    【解决方案1】:

    您应该使用 GetItem,而不是 FindItem。使用 FindItem 获取带有附件的邮件的 Id,然后使用 GetItem 获取整个邮件。

    请注意,FindItem 操作仅返回前 512 个字节(255 Unicode 字符)的任何属性;因此,消息头 超过 512 字节的集合将被截断。

    您可以修改此出色答案中的代码以满足您的需求:Exchange Web Services API : get mail attachments

    【讨论】:

    • 是的,我使用 Service.FindItems() 获取项目 ID,并使用 EmailMessage.Load() 获取每个电子邮件的所有电子邮件属性。
    • @SureshKumar 试试答案中的链接,看看是否有帮助!
    【解决方案2】:

    EWS 托管 API 中的默认超时为 90 秒,因此如果在该时间内未完成下载,您将收到超时异常。您可以通过在 ExchangeService 类上设置 timeout 属性来增加超时,例如

    Service.Time = 300000;

    300000 = 300000 毫秒或 5 分钟

    干杯 格伦

    【讨论】:

    • 是的,我已经设置了这个属性。那个时候我的网速最差。所以我看到了这个异常。我的问题是它可以下载吗?一段时间后我检查了。我的代码完美运行。 FindItem 仅返回前 512 个字节。所以我对 FindItemResults 有疑问。所以只有我问了这个Q
    • 正如 Tholie 的回答者所说,不使用 FindItems,你想做什么?您的问题是您尝试下载附件,您需要同时使用 GetItem(获取 AttachmentId)然后 GetAttachment.operations
    • 从Service.FindItems(...)中获取itemID,然后在EmailMessageSchema中添加附件属性,然后调用EmailMessage.load(),返回附件ID。然后我使用 fileAttachment.load() 下载该附件。一切正常。我对我的网速感到困扰。所以那些小伙子会失败。现在一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2017-09-21
    • 2015-01-23
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多