Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.