public static void Run( [QueueTrigger(queueName: Fn.Qs.OutgoingMail, Connection = Fn.ConnectionKeyName)] CloudQueueMessage message, ILogger log) { using (var client = new SmtpClient()) { var storageConfig = Fn.StorageConfig.Load(); var storageAccount = CloudStorageAccount.Parse(storageConfig.ConnectionString); var blobClient = storageAccount.CreateCloudBlobClient(); var outgoingContainer = blobClient.GetContainerReference(storageConfig.OutgoingMailContainerName); var emailConfig = Fn.EmailConfig.Load(); var telemetry = new TelemetryClient(new TelemetryConfiguration(Fn.InstrumentationKey())); var email = EmailStorage.LoadEmailFromStorage(message.AsString, outgoingContainer); client.Connect(emailConfig.SmtpServer, emailConfig.SmtpPort); client.Authenticate(emailConfig.Username, emailConfig.Password); client.Send(email); client.Disconnect(true); telemetry.TrackEvent( Events.SentMail, Events.Properties.Init() .Then(Events.Properties.EmailAddress, email.To.Mailboxes.First().Address)); EmailStorage.DeleteEmailFromStorage(message.AsString, outgoingContainer); log.LogInformation($"sent mail to {email.To} - {email.Subject}"); } }
private static void NotifyByEmail(MimeMessage originalMessage, CloudBlobContainer outgoingContainer, ICollector <string> outgoingMail, ILogger log) { var emailConfig = Fn.EmailConfig.Load(); log.LogInformation($"... Notifying admin of error via email ({emailConfig.AdminEmailAddress})"); var forwarded = MailUtility.ForwardMessage( originalMessage, "Here's an error email.", emailConfig.AdminEmailAddress, emailConfig.FromEmailAddress); outgoingMail.Add(EmailStorage.SaveEmailToStorage(forwarded, outgoingContainer)); }
public static void Run( [QueueTrigger(queueName: Fn.Qs.ErrorNotification, Connection = Fn.ConnectionKeyName)] CloudQueueMessage message, [Queue(queueName: Fn.Qs.OutgoingMail, Connection = Fn.ConnectionKeyName)] ICollector <string> outgoingMail, ILogger log) { var storageConfig = Fn.StorageConfig.Load(); var storageAccount = CloudStorageAccount.Parse(storageConfig.ConnectionString); var blobClient = storageAccount.CreateCloudBlobClient(); var outgoingContainer = blobClient.GetContainerReference(storageConfig.OutgoingMailContainerName); var errorContainer = blobClient.GetContainerReference(storageConfig.ErrorMailContainerName); var originalEmail = EmailStorage.LoadEmailFromStorage(message.AsString, errorContainer); log.LogInformation($"Got error {originalEmail.Subject}... notifying... "); NotifyByEmail(originalEmail, outgoingContainer, outgoingMail, log); EmailStorage.DeleteEmailFromStorage(message.AsString, errorContainer); }
public static void Run( [TimerTrigger("0 */1 * * * *")] TimerInfo timer, [Queue(queueName: Fn.Qs.IncomingMail, Connection = Fn.ConnectionKeyName)] ICollector <string> outputQueue, ILogger log) { using (var client = new ImapClient()) { var emailConfig = Fn.EmailConfig.Load(); client.ServerCertificateValidationCallback = (s, c, h, e) => true; client.Connect(emailConfig.ImapServer, emailConfig.ImapPort, SecureSocketOptions.SslOnConnect); client.Authenticate(emailConfig.Username, emailConfig.Password); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadWrite); var storageConfig = Fn.StorageConfig.Load(); var storageAccount = CloudStorageAccount.Parse(storageConfig.ConnectionString); var blobClient = storageAccount.CreateCloudBlobClient(); var container = blobClient.GetContainerReference(storageConfig.IncomingMailContainerName); //var telemetry = new TelemetryClient(new TelemetryConfiguration(Fn.InstrumentationKey())); inbox.Search(SearchQuery.NotSeen) .Select(uid => new { uid, message = inbox.GetMessage(uid) }) .ToList() .ForEach(x => { var filename = EmailStorage.SaveEmailToStorage(x.message, container); outputQueue.Add(filename); inbox.AddFlags(x.uid, MessageFlags.Seen, false); log.LogInformation($"Queued email - {x.message.From.ToString()} - {x.message.Subject} - {filename}"); //telemetry.TrackEvent(Events.ReceivedMail); }); client.Disconnect(true); } }
public static void Run( [QueueTrigger(queueName: Fn.Qs.IncomingMail, Connection = Fn.ConnectionKeyName)] CloudQueueMessage message, [Queue(queueName: Fn.Qs.OutgoingMail, Connection = Fn.ConnectionKeyName)] ICollector <string> outputQueue, [Queue(queueName: Fn.Qs.ErrorNotification, Connection = Fn.ConnectionKeyName)] ICollector <string> errorQueue, ILogger log) { var storageConfig = Fn.StorageConfig.Load(); var storageAccount = CloudStorageAccount.Parse(storageConfig.ConnectionString); var blobClient = storageAccount.CreateCloudBlobClient(); var incomingContainer = blobClient.GetContainerReference(storageConfig.IncomingMailContainerName); var outgoingContainer = blobClient.GetContainerReference(storageConfig.OutgoingMailContainerName); var settingsContainer = blobClient.GetContainerReference(storageConfig.SettingsContainerName); var errorContainer = blobClient.GetContainerReference(storageConfig.ErrorMailContainerName); var originalEmail = EmailStorage.LoadEmailFromStorage(message.AsString, incomingContainer); var telemetry = new TelemetryClient(new TelemetryConfiguration(Fn.InstrumentationKey())); var settingsStore = new SettingsStore(new CloudStore(settingsContainer)); var reply = MailProcessor.ProcessEmail( originalEmail, Fn.EmailConfig.Load().FromEmailAddress, settingsStore, telemetry); if (!reply.WasSuccessful) { var erroredFile = EmailStorage.SaveEmailToStorage(originalEmail, errorContainer); errorQueue.Add(erroredFile); log.LogInformation($"enqueueing error - {erroredFile}"); log.LogError("Error processing email, ", reply.Exception); } EmailStorage.DeleteEmailFromStorage(message.AsString, incomingContainer); var filename = EmailStorage.SaveEmailToStorage(reply.Value, outgoingContainer); outputQueue.Add(filename); log.LogInformation($"extracted data, enqueueing reply - {reply.Value.To} - {filename}"); }
static void Main(string[] args) { Console.WriteLine(string.Format("ed = {0}, Tom = {1}", "cool", "less cool")); //SRP Console.WriteLine("SRP"); UserStorage s = new UserStorage(); EmailStorage e = new EmailStorage(); SRPService main = new SRPService(s, e); Console.WriteLine("_________________________________"); Console.WriteLine("OCP"); //OCP OCPService ocp = new OCPService(); Console.WriteLine("_________________________________"); Console.WriteLine("LSP"); //LSP LSPService lsp = new LSPService(); Console.WriteLine("_________________________________"); Console.WriteLine("ISP"); //ISP ISPService isp = new ISPService(); Console.WriteLine("_________________________________"); Console.WriteLine("DIP"); //DIP DIPService sip = new DIPService(); Console.WriteLine("_________________________________"); Console.WriteLine("Law of Demeter"); //Law of demeter Demeter dim = new Demeter(); Console.WriteLine("_________________________________"); Console.WriteLine("Factory pattern"); //factory FactoryService factory = new FactoryService(); Console.WriteLine("_________________________________"); Console.WriteLine("Adaptor Pattern"); //Adaptor pattern AdaptorService adaptorService = new AdaptorService(); Console.WriteLine("_________________________________"); Console.WriteLine("Decorator Pattern"); //decorator pattern DecoratorService decoratorService = new DecoratorService(); Console.WriteLine("_________________________________"); Console.WriteLine("Repository Pattern"); //Repository pattern RepositoryService RepositoryService = new RepositoryService(); Console.WriteLine("_________________________________"); Console.WriteLine("Tree Traversal"); //BinaryTree Traversal BinaryTreeService BinaryTreeService = new BinaryTreeService(); Console.WriteLine("_________________________________"); Console.WriteLine("Number Swap"); //Number Swap NumberSwapService NumberSwapService = new NumberSwapService(); Console.WriteLine("_________________________________"); Console.WriteLine("Multiply"); //Multiply MultiplyService MultiplyService = new MultiplyService(); Console.WriteLine("_________________________________"); Console.WriteLine("OverflowChecked"); //OverflowCheckedService OverflowCheckedService OverflowChecked = new OverflowCheckedService(); Console.WriteLine("_________________________________"); Console.WriteLine("By Ref"); //pass by reference ByRefService ByRefService = new ByRefService(); Console.WriteLine("_________________________________"); Console.WriteLine(" EF Code FirstService"); //EFCodeFirstService //EFCodeFirstService EFCodeFirstService = new EFCodeFirstService(); Console.WriteLine("_________________________________"); //read Console.ReadLine(); }
public WebHookController(EmailStorage emailStorage) { this.emailStorage = emailStorage; }