Exchange web服务-获取附件始终为空

本文关键字:web 服务 获取 Exchange | 更新日期: 2024-09-16 23:14:30

我有一个接受ExchangeWebServices.MessageType参数的方法。我正在使用此变量从邮件中获取附件。当我得到附件的内容时,它总是空的。但文件名读取正确。以下是我正在使用的代码:

public void StripAttachments(MessageType fullMessage)
{
    AttachmentType[] attachments = fullMessage.Attachments;
    if (attachments != null && attachments.Length > 0)
    {
        foreach (AttachmentType attachment in attachments)
        {
            if (attachment is FileAttachmentType)
            {
                FileAttachmentType file = (FileAttachmentType)attachment;
                byte[] contents = file.Content; //Always null
                try
                {
                    if(contents != null)
                    {
                        System.IO.File.WriteAllBytes(@"C:'TestLocation" + file.Name, contents); 
                    }
                }
                catch (Exception ex)
                {
                }               
            }
        }
    }
}

有没有更好的方法从特定邮件中获取附件?

Exchange web服务-获取附件始终为空

尝试使用EmailMessage而不是MessageType

您需要使用EmailMessage.Bind(ExchangeService, ItemId)来填充附件列表并使用它们,否则将引发异常。

public void StripAttachments(ItemId id)
{
    EmailMessage email = EmailMessage.Bind(service, id)
    foreach (Attachment a in email.Attachments)
    {
        if (a is FileAttachment)
        {
            // do your thing
        }
    }
}

还可以查看使用EWS托管API获取附件,了解更多想法。