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() ?? Array.Empty(); 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("SmtpSettings:Port"); var useSsl = config.GetValue("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();