Próbuję nauczyć się korzystać z biblioteki MailKit, ale staram się odzyskać załączniki. Do tej pory mój kod otworzy skrzynkę pocztową, przejdzie przez każdą wiadomość i zapisze dane, takie jak nadawca, temat, treść, data itp., Ale nie będę mógł zajmować się załącznikami.Zapisywanie załączników za pomocą biblioteki MailKit?
Próbowałem użyć innych rozwiązań, które można znaleźć tutaj, na Github i innych stronach, ale nadal nie rozumiem dokładnie, co robią w swoim kodzie, a kiedy zbliżam się do rozwiązania działającego, powoduje to więcej błędów więc jestem zestresowany i usuwam cały kod. Nie chcę wydawać się leniwym, ale chciałbym, żeby ktoś mógł wyjaśnić, w jaki sposób mogę to osiągnąć. Zasadniczo próbuję zbudować klienta poczty dla aplikacji formularzy internetowych.
Poniżej jest mój kod, tak jak widać jestem dość pojęcia :)
// Open the Inbox folder
client.Inbox.Open(FolderAccess.ReadOnly, cancel.Token);
//get the full summary information to retrieve all details
var summary = client.Inbox.Fetch(0, -1, MessageSummaryItems.Full, cancel.Token);
foreach (var msg in summary)
{
//this code originally downloaded just the text from the body
var text = msg.Body as BodyPartText;
//but I tried altering it so that it will get attachments here also
var attachments = msg.Body as BodyPartBasic;
if (text == null)
{
var multipart = msg.Body as BodyPartMultipart;
if (multipart != null)
{
text = multipart.BodyParts.OfType<BodyPartText>().FirstOrDefault();
}
}
if (text == null)
continue;
//I hoped this would get the messages where the content dispositon was not null
//and let me do something like save the attachments somewhere but instead it throws exceptions
//about the object reference not set to an instance of the object so it's very wrong
if (attachments.ContentDisposition != null && attachments.ContentDisposition.IsAttachment)
{
//I tried to do the same as I did with the text here and grab the body part....... but no
var attachedpart = client.Inbox.GetBodyPart(msg.Index, attachments, cancel.Token);
}
else
{
//there is no plan b :(
}
// this will download *just* the text
var part = client.Inbox.GetBodyPart(msg.Index, text, cancel.Token);
//cast main body text to Text Part
TextPart _body = (TextPart)part;
Co, dokładnie, chcesz zrobić? Czy chcesz tylko pobrać załączniki i zapisać je na dysku (lub w jakimś miejscu)? A co z głównym tekstem głównym? – jstedfast