Dela via


Aspire MailPit-värdintegration

I den här artikeln lär du dig hur du använder Aspire MailPit-hostingintegration. Biblioteket CommunityToolkit.Aspire.Hosting.MailPit används för att registrera MailPit-containrar i ditt distribuerade program.

MailPit är ett verktyg för e-posttestning som tillhandahåller en falsk SMTP-server för utveckling och testning. Det ger ett webbgränssnitt där du kan visa och hantera insamlade e-postmeddelanden, vilket gör det idealiskt för testning av e-postfunktioner i dina program.

Integrering av värdtjänster

MailPit-värdintegreringsmodellen används för att modellera MailPit som MailPitResource-typ. Om du vill komma åt den här resursen och använda tilläggsmetoderna för att integrera den i din appmodell, lägger du till 📦 CommunityToolkit.Aspire.Hosting.MailPit NuGet-paketet till appvärdprojektet.

dotnet add package CommunityToolkit.Aspire.Hosting.MailPit

I programvärdprojektet registrerar du en MailPit-resurs med hjälp av AddMailPit tilläggsmetoden:

var builder = DistributedApplication.CreateBuilder(args);

var mailpit = builder.AddMailPit("mailpit");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(mailpit);

builder.Build().Run();

Metoden AddMailPit lägger till en MailPit-resurs i programmodellen. Resursen är konfigurerad för att använda standardbilden och portarna för MailPit.

När du lägger till en MailPit-resurs exponeras följande tjänster:

Tjänster Schema Hamn
SMTP smtp 1025
Webbgränssnitt http 8025

SMTP-tjänsten kan användas av dina program för att skicka e-postmeddelanden i testsyfte, medan webbgränssnittet tillhandahåller ett gränssnitt för att visa insamlade e-postmeddelanden.

Databeständighet

Som standard lagrar MailPit e-postmeddelanden i minnet, vilket innebär att alla e-postmeddelanden går förlorade när containern stoppas. Om du vill spara e-postmeddelanden mellan omstarter av containrar kan du lägga till en datavolym:

var mailpit = builder.AddMailPit("mailpit")
                     .WithDataVolume("mailpit-data");

Datavolymen bevarar MailPit-datakatalogen, vilket säkerställer att e-postmeddelanden behålls mellan omstarter av containrar.

Du kan också använda en bindningsmontering för att mappa en lokal katalog till MailPit-containern:

var mailpit = builder.AddMailPit("mailpit")
                     .WithDataBindMount(@"C:\MailPitData");

Client integration

Det finns ingen Community Toolkit-klientintegrering för MailPit. Använd i stället ett SMTP-klientbibliotek med anslutningssträngen som tillhandahålls av MailPit-resursen. MailPit-resursen innehåller en SMTP-anslutningssträng som kan användas för att skicka e-postmeddelanden till MailPit-servern.

Anslutningssträngen innehåller följande information:

  • Värd: MailPit SMTP-serverns värdnamn eller IP-adress
  • Port: Portnumret (vanligtvis 1025)

Här är ett exempel på hur du använder anslutningssträngen i ett .NET program:

public class EmailService
{
    private readonly IConfiguration _configuration;

    public EmailService(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public async Task SendEmailAsync(string to, string subject, string body)
    {
        var connectionString = _configuration.GetConnectionString("mailpit");
        var connectionInfo = ConnectionString.Parse(connectionString);

        using var client = new SmtpClient();
        await client.ConnectAsync(connectionInfo.Host, connectionInfo.Port, SecureSocketOptions.None);
        
        var message = new MimeMessage();
        message.From.Add(new MailboxAddress("Test Sender", "test@example.com"));
        message.To.Add(new MailboxAddress("", to));
        message.Subject = subject;
        message.Body = new TextPart("plain") { Text = body };

        await client.SendAsync(message);
        await client.DisconnectAsync(true);
    }
}

I det här exemplet används MailKit-biblioteket för att skicka e-postmeddelanden via MailPit SMTP-servern.

Se även