所以我目前正在构建一个应用程序,允许一组用户查看来自某个电子邮件地址的所有电子邮件。这一切正常。当我试图获取附件时,我遇到的问题就出现了。

我对这个领域比较陌生,并使用了 Microsoft 发现的示例 here. 将其与下面的代码进行比较:

    protected internal override Stream GetAttachmentStreamFinal(MailAttachmentDetails attachment)
    {
        var response = m_service.GetAttachments(new[] { attachment.Id }, BodyType.Text, Enumerable.Empty<PropertyDefinitionBase>());
        if (response.OverallResult != ServiceResult.Success)
        {
            if (response.Count > 0)
            {
                var ex = new MailException(response[0].ErrorMessage);
                ex.Data.Add(response[0].ErrorCode, response[0].ErrorMessage);
                foreach (var ed in response[0].ErrorDetails)
                {
                    ex.Data.Add(ed.Key, ed.Value);
                }
                throw ex;
            }
            throw new MailException("Error occurred while fetching the attachment from the mail service.");
        }

        foreach (var attachmentResponse in response)
        {
            if (attachmentResponse.Attachment is FileAttachment)
            {
                var fa = attachmentResponse.Attachment as FileAttachment;
                var cs = new MemoryStream(fa.Content);
                fa.Load(cs);
                cs.Seek(0, SeekOrigin.Begin);
                return cs;
            }
        }
        return null;
    }

如您所见,两组代码非常相似。但是,当我逐步完成并到达attachmentResponse.Attachment is FileAttachment 行时,我会抛出此错误



一切都被正确传递,响应返回成功。

我在逐步执行我的代码时注意到附件显示为非公开成员。但是由于这是封装在 Microsoft 的类中,所以我不确定为什么会这样或我能做什么?

最佳答案

确保您拥有最新版本的 Microsoft.Exchange.WebServices.dll。在调用 GetAttachments 方法的特定重载时,旧版本没有返回实际的附件数据。

关于c# - 使用 EWS 和 C# 获取附件失败并出现 ServiceMethodException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29256127/

10-12 12:42
查看更多