using System.Text; using System.Text.Json; using StandManager.Domain.DTO; using StandManager.Domain.Entita; using StandManager.Service.Interfaces; using StandManager.Service.Mail; namespace StandManager.Service; public class RegistrazioneMailProcessor : IMailProcessor { private readonly IManagerService _managerService; public RegistrazioneMailProcessor(IManagerService managerService) { _managerService = managerService; } public MailFrom MailFrom => MailFrom.Registrazione; public async Task ProcessAsync(List mailQueueList, EmailConfig _config, HttpClient httpClient) { var size = _config.RangeSize != 0 ? _config.RangeSize : mailQueueList.Count; foreach (var chunk in mailQueueList.Chunk(size)) { foreach (var mailQueue in chunk) { 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); } } } } }