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));
        }
示例#2
0
 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> >();
 }
示例#3
0
        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();
        }