public async Task <IActionResult> Test( Guid id, TestTransportViewModel model, [FromServices] IEmailTransportFactory factory) { if (ModelState.IsValid) { var transport = await _ctx.FindTransportAsync(id); if (transport != null) { var impl = factory.CreateTransport(transport); await impl.SendAsync(new Core.SenderParams { Subject = $"Test email using transport {id}", Body = model.Message, To = new List <string> { model.EmailAddress } }); return(RedirectToAction(nameof(Details), new { id })); } return(NotFound()); } return(View(model)); }
public QueueProcessor( EmailServiceContext db, IEmailQueueReceiver <TMessage> receiver, IEmailQueueBlobStore blobStore, IEmailTransportFactory transportFactory, IEmailLogWriter logWriter, ILoggerFactory loggerFactory) { _db = db; _receiver = receiver; _blobStore = blobStore; _transportFactory = transportFactory; _logWriter = logWriter; _logger = loggerFactory.CreateLogger <QueueProcessor <TMessage> >(); }
public static void Main(string[] args) { Configuration = GetConfig(args); IEmailTransportFactory transportFactory = EmailTransportFactory.Instance; Logger.LogInformation("Loading dependencies..."); SetupDependencies( out IEmailQueueReceiver <AzureEmailQueueMessage> receiver, out IEmailQueueBlobStore blobStore, out EmailServiceContext context, out IMemoryCache cache, out IEmailLogWriter logWriter); Logger.LogInformation("Intializing queue processor..."); var processor = new QueueProcessor <AzureEmailQueueMessage>( context, receiver, blobStore, transportFactory, logWriter, LoggerFactory); Logger.LogInformation("Listening for messages", ConsoleColor.Cyan); var task = processor.RunAsync(Cancellation.Token); task.ContinueWith(t => { var ex = t.Exception; if (ex != null) { Logger.LogCritical("Error listening to messages:\n{0}", ex); } Cancellation.Cancel(); }, TaskContinuationOptions.OnlyOnFaulted); Console.ReadLine(); Logger.LogInformation("Stopping service..."); Cancellation.Cancel(); }