检查附件大小与mailkit

问题描述:

我下载附件与下面的代码给定mailid:检查附件大小与mailkit

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())); 
        } 

然而无论是MimeEntity.ContentDisposition.Size和MimePart.ContentDuration为空。是否有任何有关附件大小的字段?

如果Content-Disposition头的大小参数,像这样的ContentDisposition.Size属性仅设置:

Content-Disposition: attachment; size=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); 
    } 
}