Сертифицированная электронная почта / PEC — это электронная почта почтовая система, в которой отправка и доставка сообщений в почтовый ящик получателя отслеживаются и сертифицируются.
Сертифицированное сообщение похоже на «простое» сообщение электронной почты, которое должно содержать текст и/или тело HTML. и по крайней мере три вложения:
- sime.p7s с цифровой подписью
- файл EML postacert.EML, содержащий сообщение пользователя
- файл XML daticert.XML, содержащий информацию о передаче почты, например об отправителе, получателях , тема письма, эмитент УИК, день, время и др. информация
Странное поведение MailKit заключается в том, что каждое сообщение имеет только одно вложение — файл подписи smime.p7s, и я не вижу EML. тело и информацию отслеживания передачи XML.
Вложение список, содержащий только один элемент
Подробности списка вложений
Используя интерфейс веб-почты провайдера, я вижу, что эти два вложения действительно присутствуют и имеют правильное имя .
Подробности о вложениях веб-почты
Во время отладки простого кода я вижу, что каждое прочитанное сообщение имеет список .Attachments, содержащий только один элемент в позиции [0], указывающий на файл подписи smime.p7s.
Знаете ли вы, почему список вложений не содержит XML и файл EML?
Есть ли в MailKit ограничение или условие исключения для этих двух типов частей mime?
И в этом случае можете ли вы предложить другой способ правильно получить все вложения сообщений?< /p>
Заранее благодарим за внимание и ваша поддержка.
Марко.
Код:
using System;
using MailKit.Net.Imap;
using MailKit;
using MimeKit;
using System.Reflection.Metadata.Ecma335;
class Program
{
static void Main(string[] args)
{
var client = new ImapClient();
try
{
client.Connect("imaps.pec.aruba.it", 993, true);
client.Authenticate("*********@pec.it", "*******");
client.Inbox.Open(FolderAccess.ReadOnly);
for (int i = 0; i < Math.Min(10, client.Inbox.Count); i++)
{
var message = client.Inbox.GetMessage(i);
Console.WriteLine($"Message {i} - Subject: {message.Subject}");
Console.WriteLine($"From: {message.From}");
Console.WriteLine($"Date: {message.Date}");
Console.WriteLine($"Body: {message.TextBody}");
Console.WriteLine($"Body: {message.HtmlBody}");
Console.WriteLine(new string('-', 30));
foreach (MimeEntity attachment in message.Attachments)
{
var fileName = attachment.ContentDisposition?.FileName ?? attachment.ContentType.Name;
Console.WriteLine($"Filename: {fileName}");
}
Console.WriteLine(new string('=', 50));
}
client.Disconnect(true);
}
catch (Exception excp)
{
Console.WriteLine($"Exception: {excp.Message}");
}
finally
{
client.Dispose();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... hments-lis
Мобильная версия