Files
StandManager/StandManager.MailProcessor/MailProcessor.cs
2026-01-19 09:51:23 +01:00

77 lines
2.6 KiB
C#

using System.Net.Http.Headers;
using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
using StandManager.MailProcessor.Mail;
using StandManager.Service.Interfaces;
public class MailProcessor
{
private readonly IManagerService _managerService;
private readonly EmailConfig _config;
public MailProcessor(IManagerService managerService, EmailConfig config)
{
_managerService = managerService;
_config = config;
}
public async Task Process()
{
var list = await _managerService.MailQueueService.RicercaQueryable(x =>
x.Eliminato == false && x.Sent == false && string.IsNullOrEmpty(x.Error), solaLettura:false);
using var httpClient = new HttpClient();
foreach (var mailQueue in list)
{
var email = new Email()
{
From = _config.From,
Body = string.IsNullOrEmpty(mailQueue.Args) ? mailQueue.Body : string.Format(mailQueue.Body, mailQueue.Args?.Split(_config.MailSplitChar) ?? [""]),
Cc = null,
Subject = mailQueue.Subject,
To = new(){"g.vitari@oaservice.it"} // mailQueue.ToList.Split(";").ToList()
};
var messageJson = JsonSerializer.Serialize(email);
// multipart
using var form = new MultipartFormDataContent();
form.Add(
new StringContent(messageJson, Encoding.UTF8, "application/json"),
"messageJson"
);
//Attachments
/*var filePath = @"C:\temp\test.pdf";
var fileBytes = await File.ReadAllBytesAsync(filePath);
var fileContent = new ByteArrayContent(fileBytes);
fileContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/pdf");
form.Add(
fileContent,
"attachments",
Path.GetFileName(filePath)
);*/
try
{
var response = await httpClient.PostAsync(
_config.ServerAddress,
form
);
response.EnsureSuccessStatusCode();
mailQueue.Sent = true;
await _managerService.MailQueueService.Salva(mailQueue);
}
catch (Exception e)
{
mailQueue.Sent = false;
mailQueue.Error = e.Message;
await _managerService.MailQueueService.Salva(mailQueue);
}
}
var a = list;
}
}