Are you sure that this happens with the latest version?
I'm 99% sure this problem no longer occurs.
This is the unit test we use to verify. It connects to outlook.com.
MailBuilder builder = new MailBuilder();
builder.Subject = "Zero sized attachment";
MimeData attachment = builder.AddAttachment(new byte[] { });
attachment.FileName = "zero-sized.dat";
attachment.ContentTransferEncoding = MimeEncoding.Base64;
IMail mail1 = builder.Create();
client.SelectInbox();
client.UploadMessage(mail1);
List<long> uids = client.GetAll();
List<MessageInfo> infos = client.GetMessageInfoByUID(uids);
MimeStructure first = infos[0].BodyStructure.Attachments[0];
Assert.AreEqual(0, first.TransferSize);
Assert.AreEqual(MimeEncoding.Base64, first.ContentTransferEncoding);
Assert.IsNull(client.GetDataByUID(first));
Assert.IsNull(first.Data);
Server acts in the same way (NIL is returned):
C: 09b755b16af94a54 UID FETCH 1216 (UID BODY[2])
S: * 1 FETCH (UID 1216 BODY[2] NIL FLAGS (\Seen \Recent))
S: 09b755b16af94a54 OK FETCH completed.