77 lines
2.6 KiB
C#
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;
|
|
}
|
|
} |