C# 使用mailkit检查附件大小

C# 使用mailkit检查附件大小,c#,size,imap,attachment,mailkit,C#,Size,Imap,Attachment,Mailkit,我正在下载具有以下代码的给定mailid的附件: HeaderSearchQuery searchCondition = SearchQuery.HeaderContains("Message-Id", ssMailItemId); var folder = client.GetFolder(ssFolderName); folder.Open(FolderAccess.ReadOnly); IL

我正在下载具有以下代码的给定mailid的附件:

HeaderSearchQuery searchCondition = SearchQuery.HeaderContains("Message-Id", ssMailItemId);

                var folder = client.GetFolder(ssFolderName);
                folder.Open(FolderAccess.ReadOnly);

                IList<UniqueId> ids = folder.Search(searchCondition);

                foreach (UniqueId uniqueId in ids)
                {
                    MimeMessage message = folder.GetMessage(uniqueId);

                    foreach (MimeEntity attachment in message.Attachments)
                    {
                        ssAttachmentsDetail.Append(fillAttachmentDetailRecord(attachment, uniqueId.Id.ToString()));
                    }
HeaderSearchQuery searchCondition=SearchQuery.HeaderContains(“邮件Id”,ssMailItemId);
var folder=client.GetFolder(ssFolderName);
folder.Open(FolderAccess.ReadOnly);
IList ids=文件夹.Search(searchCondition);
foreach(ID中的UniqueId UniqueId)
{
mimessage message=folder.GetMessage(uniqueId);
foreach(message.Attachments中的MimeEntity附件)
{
附加(fillAttachmentDetailRecord(附件,uniqueId.Id.ToString());
}

但是MimeEntity.ContentDisposition.Size和MimePart.ContentDuration都是空的。是否有任何关于附件大小的字段?

只有在
内容处置
标题具有大小参数时才会设置
ContentDisposition.Size
属性,如下所示:

// specify that we want to fill the IMessageSummary.Body and IMessageSummary.UniqueId fields...
var items = folder.Fetch (ids, MessageSummaryItems.BodyStructure | MessageSummaryItems.UniqueId);
foreach (var item in items) {
    foreach (var attachment in item.Attachments) {
        // 'octets' is just a fancy word for "number of bytes"
        var size = attachment.Octets;

        // download the individual attachment
        var entity = folder.GetBodyPart (item.UniqueId, attachment);
    }
}
内容配置:附件;大小=15462

但无论如何,这个值都不应该被信任

如果您想要附件的大小,唯一准确的方法是执行以下操作:

// specify that we want to fill the IMessageSummary.Body and IMessageSummary.UniqueId fields...
var items = folder.Fetch (ids, MessageSummaryItems.BodyStructure | MessageSummaryItems.UniqueId);
foreach (var item in items) {
    foreach (var attachment in item.Attachments) {
        // 'octets' is just a fancy word for "number of bytes"
        var size = attachment.Octets;

        // download the individual attachment
        var entity = folder.GetBodyPart (item.UniqueId, attachment);
    }
}