C # / MimeKit: лучший способ определить, не является ли вложение подписью - PullRequest
0 голосов
/ 04 октября 2018

Я использую MailKit (который основан на MimeKit) для отправки и получения писем, которые подписаны и зашифрованы.

Я хочу проверить, имеет ли полученное в письме только одно вложение в методеЯ звоню туда, где, как я ожидаю, в письме будет только одно вложение .txt.

Мое текущее решение выглядит так:

private string GetContentOfSingleAttachmentFromMail(MimeEntity decryptedEntity)
    {
        if (decryptedEntity == null)
        {
            throw new ArgumentNullException("decryptedEntity");
        }

        var mimeMessage = new MimeMessage(decryptedEntity);

        var attachments = mimeMessage.Attachments.Where(attachment =>
        //signatures don't matter for the attachment count
            !attachment.ContentType.MimeType.Equals("application/pkcs7-signature")).ToList();

        if (attachments.Count() > 1)
        {
            throw new InvalidOperationException(
                "More than one attachment was found.");
        }
        var firstAttachment = attachments.FirstOrDefault();
        if (firstAttachment != null)
        {
            using (var memoryStream = new MemoryStream())
            {
                HandleMimeEntity(firstAttachment, memoryStream);
                return Encoding.UTF8.GetString(memoryStream.ToArray());
            }
        }
        throw new MailMessageGetAttachmentContentException("The message did not contain an attachment");
    }

Есть ли лучший способ, чем проверка MimeType?(в строке 12) @jstedfast У вас есть идея?

...