IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Imap (jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 21 kwietnia 2026

W dziedzinie komunikacji serwera e-mail, obiekt Internet Message Access Protocol (IMAP) odgrywa kluczową rolę w umożliwieniu bezproblemowego dostępu do wiadomości e-mail przechowywanych na serwerze pocztowym. Integracja wsparcia dla funkcji nowego serwera IMAP w aplikacjach C# umożliwia deweloperom tworzenie solidnych klientów e-mail, automatyzację zadań przetwarzania e-maili oraz zwiększenie produktywności. Ten kompleksowy przewodnik bada podstawy integracji protokołu IMAP w C#, obejmując kluczowe pojęcia, techniki realizacji IMAP, rozszerzenie idle oraz praktyczne przykłady kodu, aby pomóc deweloperom w wykorzystywaniu mocy klientów IMAP w ich aplikacjach. Ten przewodnik bada również, jak stworzyć pliki PDF za pomocą IronPDF - solidnej biblioteki C# do generowania i manipulacji plikami PDF oraz funkcjonalności IMAP C# z Rebex.

1. Zrozumienie klienta IMAP

IMAP to powszechnie używany protokół do uzyskiwania dostępu i zarządzania wiadomościami e-mail przechowywanymi na zdalnym serwerze pocztowym. W przeciwieństwie do starszego protokołu POP3, który pobiera wiadomości e-mail do lokalnego klienta e-mail i usuwa je z serwera pocztowego, serwery IMAP pozwalają użytkownikom przeglądać, organizować i manipulować wiadomościami e-mail bezpośrednio na serwerze. To umożliwia synchronizację e-maili na wielu urządzeniach i zapewnia bardziej elastyczne podejście do zarządzania e-mailami.

2. Kluczowe cechy IMAP

  1. Synchronizacja wiadomości: IMAP umożliwia klientom synchronizację wiadomości e-mail, folderów oraz statusu skrzynki pocztowej z serwerem, co zapewnia spójny dostęp do najnowszych danych e-maili z dowolnego urządzenia.
  2. Zarządzanie folderami: IMAP wspiera tworzenie, zmianę nazwy, usuwanie i organizację folderów e-mail na serwerze, pozwalając użytkownikom organizować swoje e-maile w logiczne kategorie.
  3. Pobieranie i zarządzanie wiadomościami: Dzięki IMAP klienci mogą pobierać, wyszukiwać, czytać, przenosić, kopiować i usuwać pojedyncze wiadomości e-mail lub całe wątki bezpośrednio z serwera.
  4. Oznaczanie e-maili i aktualizacje statusu: IMAP pozwala klientom na oznaczanie wiadomości, oznaczanie ich jako przeczytane lub nieprzeczytane oraz zarządzanie flagami wiadomości takimi jak "zobaczone", "odpowiedziane" lub "oznaczone", co zapewnia lepszą kontrolę nad statusem e-maili.

3. Implementing IMAP Server in C#

Aby zintegrować funkcjonalność IMAP w aplikacjach C#, deweloperzy mogą wykorzystać zewnętrzne biblioteki takie jak MailKit lub OpenPop.NET, które oferują kompleksowe wsparcie dla operacji IMAP. Przyjrzyjmy się prostemu przykładowi, jak używać MailKit do połączenia użytkownika z serwerem IMAP, pobierania wiadomości e-mail i wykonywania podstawowych operacji.

Zanim przejdziemy do przykładu kodu, jest kilka kroków, które należy wykonać, aby uzyskać hasło do aplikacji potrzebne do użycia serwera IMAP do uzyskania dostępu do e-maili.

  1. Przejdź do swojego konta Gmail i kliknij na Ustawienia.
  2. W ustawieniach przejdź do sekcji IMAP i zaznacz następujące pola wyboru.

C# Imap (Jak to działa dla programistów): Rysunek 1 - Ustawienia IMAP

  1. Następnie przejdź do swojego konta Google i znajdź weryfikację dwuetapową.

C# Imap (Jak to działa dla programistów): Rysunek 2 - Weryfikacja dwuetapowa

  1. Na stronie ustawień weryfikacji dwuetapowej, przewiń na dół i znajdź Hasło aplikacji.

C# Imap (Jak to działa dla programistów): Rysunek 3 - Hasła aplikacji

  1. Następnie wpisz nazwę swojej aplikacji i kliknij na przycisk Utwórz.

C# Imap (Jak to działa dla programistów): Rysunek 4 - Utwórz hasło aplikacji

  1. Hasło aplikacji zostało pomyślnie wygenerowane.

C# Imap (Jak to działa dla programistów): Rysunek 5 - Wygenerowane hasło aplikacji

Gdy konfiguracja jest zakończona i hasło aplikacji zostało utworzone, przejdźmy do kodu.

// This example demonstrates how to connect to an IMAP server using MailKit and retrieve unread email messages.
// Install the MailKit package using the following command:
// dotnet add package MailKit

using System;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;

class Program
{
    static void Main(string[] args)
    {
        // IMAP server settings
        string imapServer = "imap.gmail.com";
        int imapPort = 993;
        bool useSsl = true;

        // IMAP credentials
        string username = "your-email@gmail.com"; // Replace with your email address
        string password = "your-app-password"; // Replace with the generated app password

        try
        {
            using (var client = new ImapClient())
            {
                // Connect to the IMAP server
                client.Connect(imapServer, imapPort, useSsl);

                // Authenticate with the server
                client.Authenticate(username, password);

                // Select the INBOX folder or any special folder
                client.Inbox.Open(FolderAccess.ReadOnly);

                // Search for unread messages
                var searchQuery = SearchQuery.NotSeen;
                var uids = client.Inbox.Search(searchQuery);
                
                foreach (var uid in uids)
                {
                    // Retrieve the message by UID
                    var message = client.Inbox.GetMessage(uid);

                    // Display message details
                    Console.WriteLine($"From: {message.From}");
                    Console.WriteLine($"Subject: {message.Subject}");
                    Console.WriteLine($"Date: {message.Date}");
                    Console.WriteLine($"Body: {message.TextBody}");
                    Console.WriteLine();
                }

                // Disconnect from the server
                client.Disconnect(true);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}

W tym przykładzie kodu używamy MailKit do połączenia się z serwerem IMAP, uwierzytelnienia naszego połączenia z serwerem za pomocą podanych poświadczeń oraz pobrania nieprzeczytanych wiadomości e-mail z folderu INBOX. Następnie przechodzimy przez listę nieprzeczytanych UID-ów wiadomości, pobieramy każdą wiadomość po UID i wyświetlamy jej szczegóły, w tym nadawcę, temat, datę i treść.

Wynik

C# Imap (Jak to działa dla programistów): Rysunek 6 - Wyjście konsoli

4. IronPDF

IronPDF to potężna biblioteka C# zaprojektowana, aby uprościć tworzenie, modyfikację i renderowanie dokumentów PDF w aplikacjach .NET. Dzięki intuicyjnemu API i bogatemu zestawowi funkcji, IronPDF umożliwia deweloperom bezproblemowe generowanie, edytowanie i manipulowanie plikami PDF programowo, zwiększając wszechstronność i funkcjonalność ich aplikacji. Niezależnie od tego, czy potrzebujesz wygenerować dynamiczne raporty, przekonwertować treść HTML na PDF, wyodrębnić tekst i obrazy z istniejących PDF, czy też podpisać dokumenty cyfrowo, IronPDF zapewnia kompleksowy zestaw narzędzi spełniających potrzeby przetwarzania PDF. Dzięki wykorzystaniu IronPDF, deweloperzy mogą usprawnić swoje zadania związane z PDF i dostarczać wysokiej jakości rozwiązania dokumentacyjne z łatwością.

IronPDF wyróżnia się w konwersji HTML do PDF, zapewniając precyzyjne zachowanie oryginalnych układów i stylów. Idealnie nadaje się do tworzenia plików PDF z treści internetowych, takich jak raporty, faktury i dokumentacja. Dzięki obsłudze plików HTML, adresów URL i surowych ciągów znaków HTML, IronPDF z łatwością tworzy wysokiej jakości dokumenty PDF.

// This example demonstrates how to convert HTML content to a PDF using IronPDF.
// Install the IronPdf package using the following command:
// dotnet add package IronPdf

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

4.1. Zainstaluj IronPDF

IronPDF można zainstalować za pomocą menedżera pakietów NuGet, uruchamiając poniższą komendę.

PM > Install-Package IronPdf

4.2. Tworzenie PDF z e-maili z serwera IMAP

// This example demonstrates how to connect to an IMAP server, retrieve unread email messages, and generate a PDF report using IronPDF.

using System;
using System.Collections.Generic;
using MailKit.Net.Imap;
using MailKit.Search;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // IMAP server settings
        string imapServer = "imap.gmail.com";
        int imapPort = 993;
        bool useSsl = true;

        // IMAP credentials
        string username = "your-email@gmail.com"; // Replace with your email address
        string password = "your-app-password"; // Replace with the generated app password

        try
        {
            using (var client = new ImapClient())
            {
                // Connect to the IMAP server
                client.Connect(imapServer, imapPort, useSsl);

                // Authenticate with the server
                client.Authenticate(username, password);

                // Select the INBOX folder
                client.Inbox.Open(FolderAccess.ReadOnly);

                // Search for unread messages
                var searchQuery = SearchQuery.NotSeen;
                var uids = client.Inbox.Search(searchQuery);

                // Create a list to store message details
                var messages = new List<string>();

                // Retrieve details for the first 100 unread messages
                for (int i = 0; i < Math.Min(uids.Count, 100); i++)
                {
                    var uid = uids[i];
                    var message = client.Inbox.GetMessage(uid);

                    // Add message details to the list
                    messages.Add($"From: {message.From}");
                    messages.Add($"Subject: {message.Subject}");
                    messages.Add($"Date: {message.Date}");
                    messages.Add($"Body: {message.TextBody}");
                    messages.Add(""); // Add an empty line for separation
                }

                // Generate PDF report
                GeneratePdfReport(messages);

                // Disconnect from the server
                client.Disconnect(true);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }

    static void GeneratePdfReport(List<string> messages)
    {
        try
        {
            var pdf = new ChromePdfRenderer();

            // Convert message details to HTML format
            string htmlContent = "<h1>Not Seen Emails</h1><hr/>";
            foreach (var message in messages)
            {
                htmlContent += $"<p style='padding-top:30px;'>{message}</p>";
            }

            // Render HTML content to PDF
            var pdfOutput = pdf.RenderHtmlAsPdf(htmlContent);

            // Save PDF to file
            var outputPath = "Email_Report.pdf";
            pdfOutput.SaveAs(outputPath);

            Console.WriteLine($"PDF report generated successfully: {outputPath}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error generating PDF report: {ex.Message}");
        }
    }
}
  1. Tworzymy listę wiadomości do przechowywania szczegółów pierwszych 100 nieprzeczytanych e-maili.
  2. W pętli do pobierania szczegółów e-maili dodajemy szczegóły każdej wiadomości do listy wiadomości.
  3. Po pobraniu szczegółów wszystkich nieprzeczytanych wiadomości lub pierwszych 100 e-maili, wywołujemy metodę GeneratePdfReport, aby stworzyć raport PDF zawierający te szczegóły.
  4. W metodzie GeneratePdfReport konwertujemy szczegóły wiadomości na format HTML i używamy IronPDF do renderowania tej treści HTML w plik PDF.
  5. Raport PDF jest zapisywany do pliku o nazwie "Email_Report.pdf".

Możesz przetestować ten kod, zastępując domyślne ustawienia serwera IMAP i poświadczenia swoimi rzeczywistymi informacjami o serwerze i uruchamiając program. Będzie to połączyć się z serwerem IMAP, pobrać szczegóły pierwszych 100 nieprzeczytanych e-maili, wygenerować raport PDF zawierający te szczegóły i zapisać go do pliku.

C# Imap (Jak to działa dla programistów): Rysunek 7 - Wyjście raportu e-mail

5. Podsumowanie

Integracja funkcjonalności IMAP w aplikacjach C# otwiera świat możliwości dla komunikacji e-mailowej, automatyzacji i zwiększenia produktywności. Zrozumienie podstaw IMAP i wykorzystanie potężnych bibliotek takich jak MailKit .NET pozwala deweloperom budować w pełni funkcjonalnych klientów e-mail, automatyzować zadania przetwarzania e-maili i usprawniać przepływy pracy komunikacyjnej z łatwością.

Dzięki praktycznej wiedzy i przykładom kodu zawartym w tym przewodniku, deweloperzy są gotowi eksplorować moc integracji IMAP w swoich aplikacjach C# i odkrywać nowe możliwości innowacji i efektywności w komunikacji e-mail. Dzięki pomocy IronPDF, wszechstronnej biblioteki do przetwarzania PDF, można zapisywać załączniki jako pliki PDF, importować e-maile jako pliki PDF lub przechowywać e-maile w dokumentach PDF.

Aby dowiedzieć się więcej o IronPDF i jego funkcjach, odwiedź oficjalną stronę dokumentacji IronPDF.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta