Add project files.

This commit is contained in:
2026-07-14 09:25:59 +02:00
parent c8dcbf42d4
commit 8c64e0447f
8 changed files with 163 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
using Microsoft.AspNetCore.Mvc;
using MimeKit;
using SmtpClient = MailKit.Net.Smtp.SmtpClient;
var builder = WebApplication.CreateBuilder(args);
var allowedOrigins = builder.Configuration.GetSection("CorsSettings:AllowedOrigins").Get<string[]>() ?? Array.Empty<string>();
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowStrictOrigins", policy =>
{
policy.WithOrigins(allowedOrigins)
.AllowAnyHeader()
.AllowAnyMethod();
});
});
var app = builder.Build();
app.UseCors("AllowStrictOrigins");
app.MapPost("/api/send-email", async ([FromBody] EmailRequest request, IConfiguration config) =>
{
try
{
var message = new MimeMessage();
var defaultFrom = config["SmtpSettings:DefaultFrom"];
var defaultTo = config["SmtpSettings:DefaultTo"];
var fromAddress = string.IsNullOrWhiteSpace(request.From) ? defaultFrom : request.From;
var toAddress = string.IsNullOrWhiteSpace(request.To) ? defaultTo : request.To;
message.From.Add(MailboxAddress.Parse(fromAddress!));
message.To.Add(MailboxAddress.Parse(toAddress!));
message.Subject = "New message from LiteCharms";
var bodyBuilder = new BodyBuilder { HtmlBody = request.HtmlBody };
message.Body = bodyBuilder.ToMessageBody();
using var client = new SmtpClient();
var host = config["SmtpSettings:Host"];
var port = config.GetValue<int>("SmtpSettings:Port");
var useSsl = config.GetValue<bool>("SmtpSettings:UseSsl");
var username = config["SmtpSettings:Username"];
var password = config["SmtpSettings:Password"];
await client.ConnectAsync(host!, port, useSsl);
await client.AuthenticateAsync(username!, password!);
await client.SendAsync(message);
await client.DisconnectAsync(true);
return Results.Ok(new { success = true, message = "Email dispatched successfully." });
}
catch (Exception ex)
{
return Results.Problem(detail: ex.Message, statusCode: 500);
}
});
app.Run();