- FIX Salvataggio mail Registrazione

- Aggiunta RangeSize in scheduler
This commit is contained in:
2026-01-22 11:46:09 +01:00
parent cc296bb102
commit d4659ef928
7 changed files with 63 additions and 50 deletions

View File

@ -16,7 +16,9 @@ public class MailQueueService : TService<MailQueue>, IMailQueueService
public async Task<MailQueue> Salva(MailQueue entity)
{
_unitOfWork.MailQueueRepository.Update(entity);
if (entity.Id == Guid.Empty) await _unitOfWork.MailQueueRepository.Put(entity);
else _unitOfWork.MailQueueRepository.Update(entity);
await _unitOfWork.Salva();
return entity;

View File

@ -20,52 +20,58 @@ public class RegistrazioneMailProcessor : IMailProcessor
public async Task ProcessAsync(List<MailQueue> mailQueueList, EmailConfig _config, HttpClient httpClient)
{
foreach (var mailQueue in mailQueueList)
var size = _config.RangeSize != 0 ? _config.RangeSize : mailQueueList.Count;
foreach (var chunk in mailQueueList.Chunk(size))
{
var email = new Email()
foreach (var mailQueue in chunk)
{
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 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);
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
// multipart
using var form = new MultipartFormDataContent();
form.Add(
new StringContent(messageJson, Encoding.UTF8, "application/json"),
"messageJson"
);
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);
//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);
}
}
}
}