using System.Net.Http.Headers; using System.Net.Http.Json; using System.Text; using System.Text.Json; using StandManager.Domain.DTO; 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; } }