WebVenta/WebVentaCoche/Services/EmailService.cs
2024-12-17 14:57:49 +01:00

52 lines
1.9 KiB
C#

using SendGrid;
using SendGrid.Helpers.Mail;
namespace WebVentaCoche.Services
{
public class EmailService
{
private readonly string _apiKey;
private readonly string _fromEmail;
private readonly string _fromName;
public EmailService(IConfiguration configuration)
{
// Leer configuraciones desde appsettings.json
_apiKey = configuration["SendGrid:ApiKey"];
_fromEmail = configuration["SendGrid:FromEmail"];
_fromName = configuration["SendGrid:FromName"];
}
public async Task SendEmailAsync(string to, string subject, string htmlContent)
{
// Crear cliente SendGrid
var client = new SendGridClient(_apiKey);
// Configurar remitente y destinatario
var from = new EmailAddress(_fromEmail, _fromName);
var toEmail = new EmailAddress(to);
// Convertir el contenido HTML a texto plano eliminando etiquetas
var plainTextContent = System.Text.RegularExpressions.Regex.Replace(htmlContent, "<[^>]+>", string.Empty);
// Crear el mensaje
var message = MailHelper.CreateSingleEmail(from, toEmail, subject, plainTextContent, htmlContent);
// Enviar el mensaje
var response = await client.SendEmailAsync(message);
// Manejar errores en caso de que el envío falle
if (response.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
throw new Exception("Error: Solicitud inválida al enviar el correo.");
}
else if (!response.IsSuccessStatusCode)
{
var errorMessage = await response.Body.ReadAsStringAsync();
throw new Exception($"Error al enviar el correo: {response.StatusCode} - {errorMessage}");
}
}
}
}