public void TestSending()
        {
            var emailSenderRequisites = new EmailSenderRequisites
            {
                ServerLogin    = "******",
                ServerEmail    = "*****@*****.**",
                ServerPassword = @".L\yW#{^0M#ExONc[p(sP=[#h",
                SmtpHost       = "smtp.gmail.com",
                SmtpPort       = 587,
            };
            var sender = new EmailSender(emailSenderRequisites);

            sender.SendEmail(new EmailMessage
            {
                RecipientEmail = "*****@*****.**",
                Subject        = "Test subject",
                Body           = "Test message",
                Attachments    = new[]
                {
                    new Attachment
                    {
                        Data     = Encoding.UTF8.GetBytes("Hello from attachment"),
                        Filename = "simple.txt",
                    }
                }
            });
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var secretManager         = new SecretManager();
            var emailSenderRequisites = new EmailSenderRequisites
            {
                ServerLogin    = "******",
                ServerEmail    = "*****@*****.**",
                ServerPassword = secretManager.GetSecret("password"),
                SmtpHost       = "smtp.gmail.com",
                SmtpPort       = 587,
            };
            var responsibleRepository = new ResponsibleRepository();
            var emailRepository       = new EmailRepository();
            var emailSender           = new EmailSender(emailSenderRequisites);

            Console.Out.WriteLine("Email sender started!");
            while (true)
            {
                var unsentEmails = emailRepository.ReadUnsentEmails().Shuffle();
                Console.Out.WriteLine($"Found {unsentEmails.Length} unsent emails");
                foreach (var emailId in unsentEmails)
                {
                    try
                    {
                        var email    = emailRepository.ReadEmail(emailId);
                        var doublers = responsibleRepository.GetDoublers(email.ResponsibleId);
                        var myEmail  = "*****@*****.**";
                        // todo(sivukhin, 19.05.2019): Use email.RecipientEmail instead of myEmail
                        foreach (var targetEmail in new[] { myEmail }.Concat(doublers.Select(x => x.Email)))
                        {
                            Console.Out.WriteLine($"Send message to recipient: {targetEmail}");
                            email.RecipientEmail = targetEmail;
                            emailSender.SendEmail(email);
                            emailRepository.SetEmailProcessed(emailId);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.Error.WriteLine(e);
                    }
                }

                Thread.Sleep(TimeSpan.FromSeconds(1));
            }
        }