(Zertifizierte E-Mail / PEC ist eine E-Mail System, in dem der Nachrichtenversand und die Zustellung an das Postfach des Empfängers verfolgt und zertifiziert werden.)
Eine zertifizierte Nachricht ist wie eine „einfache“ E-Mail-Nachricht, die einen Text und/oder einen HTML-Text enthalten sollte und mindestens drei Anhänge:
- ein „smime.p7s“ mit der digitalen Signatur
- eine EML-Datei „postacert.EML“, die enthält die Benutzernachricht
- eine XML-Datei „daticert.XML“, die Informationen über die Übertragung der E-Mail enthält, wie z. B. Absender, Empfänger, Betreff der E-Mail, Aussteller des PEC, Tag, Uhrzeit und andere Informationen
Das seltsame Verhalten von MailKit besteht darin, dass jede Nachricht nur einen Anhang zu haben scheint, die Signaturdatei „smime.p7s“, und ich den EML-Text und die XML-Übertragungsverfolgungsinformationen nicht sehen kann.
Anhangsliste, die nur ein Element enthält
Details zur Anhangsliste
Anhand des Webmail-Frontends des Anbieters kann ich sehen, dass diese beiden Anhänge tatsächlich vorhanden sind und den richtigen Namen haben.
Details zu Webmail-Anhängen
Beim Debuggen des einfachen Codes kann ich sehen, dass jede gelesene Nachricht die Liste „.Attachments“ enthält, die nur ein Element an Position [0] enthält. und zeigt auf die Signaturdatei "smime.p7s".
Wissen Sie, warum die Anhangsliste nicht die XM-Land-EML-Datei enthält?
Gibt es in MailKit eine Beschränkung oder eine Ausschlussbedingung für Diese beiden Arten von MIME-Teilen?
Und können Sie in diesem Fall eine andere Möglichkeit vorschlagen, alle Nachrichtenanhänge korrekt abzurufen?
Vielen Dank im Voraus für Ihre Aufmerksamkeit und Ihre Unterstützung.
Marco.
Code: Select all
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();
}
}
}