public void SendMailWithStandardConfig()
        {
            var connCounter    = 0;
            var disconnCounter = 0;
            SmtpClientConfig usedClientConfig = null;

            void OnAfterSend(object sender, MailSenderAfterSendEventArgs args)
            {
                lock (_locker) { usedClientConfig = args.SmtpClientConfig; }
            }

            void OnSmtpConnected(object sender, MailSenderSmtpClientEventArgs args)
            {
                lock (_locker) { connCounter++; }
            }

            void OnSmtpDisconnected(object sender, MailSenderSmtpClientEventArgs args)
            {
                lock (_locker) { disconnCounter++; }
            }

            SendMail(OnAfterSend, OnSmtpConnected, OnSmtpDisconnected);

            Assert.AreEqual(connCounter, 1);
            Assert.AreEqual(disconnCounter, 1);
            Assert.AreEqual(1, _server.ReceivedEmailCount);
            Assert.AreEqual(_settings.SenderConfig.SmtpClientConfig[0].Name, usedClientConfig.Name);

            Console.WriteLine($"Sending mail with smtp config name '{usedClientConfig.Name}' passed.\n\n");
            Console.WriteLine(_server.ReceivedEmail[0].Data);
        }
Ejemplo n.º 2
0
        public void Message_Output_Directory()
        {
            var smtpConfig = new SmtpClientConfig();

            smtpConfig.MessageOutput = MessageOutput.Directory;
            Assert.AreEqual(System.IO.Path.GetTempPath(), smtpConfig.MailOutputDirectory);
        }
Ejemplo n.º 3
0
        public void Equality()
        {
            var sc1 = new SmtpClientConfig();
            var sc2 = new SmtpClientConfig();

            Assert.IsTrue(sc1.Equals(sc2));
            Assert.IsFalse(sc1.Equals(null));
            Assert.IsFalse(sc1.Equals(new object()));
        }
Ejemplo n.º 4
0
        public void Message_Output_PickupDirectoryFromIis()
        {
            var smtpConfig = new SmtpClientConfig();

            smtpConfig.MessageOutput = MessageOutput.PickupDirectoryFromIis;
            // May throw for many reasons:
            // https://torontoprogrammer.ca/2011/04/fixing-the-cannot-get-iis-pickup-directory-error-in-asp-net/
            // Assert.DoesNotThrow(() => { var x = smtpConfig.MailOutputDirectory; });
        }
Ejemplo n.º 5
0
        public void NotEqual()
        {
            var sc1 = new SmtpClientConfig();
            var sc2 = new SmtpClientConfig {
                SmtpPort = 12345
            };

            Assert.IsFalse(sc1.Equals(sc2));
            Assert.IsFalse(sc1.Equals(null));
            Assert.IsFalse(sc1.Equals(new object()));
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            SmtpClientConfig config = new SmtpClientConfig(587, "smtp.gmail.com", "*****@*****.**", "JweIAail247!");

            config.HtmlFormat = false;

            SmtpClient client = new SmtpClient(config);

            client.Send("*****@*****.**", "welcome to oncor", "say hello from http://oncordev.oncor.com/api/verify/11212121-5515");
            client.Send("*****@*****.**", "*****@*****.**", "welcome to oncor", "say hello from http://oncordev.oncor.com/api/verify/11212121-5515");
        }
Ejemplo n.º 7
0
        public void SendMailWithBackupConfig()
        {
            SmtpClientConfig usedClientConfig = null;
            EventHandler <MailSenderAfterSendEventArgs> onAfterSend = (sender, args) => { usedClientConfig = args.SmtpClientConfig; };

            _settings.SenderConfig.SmtpClientConfig[0].SmtpPort++; // set wrong server port, so that backup config should be taken
            SendMail(onAfterSend);
            Assert.AreEqual(1, _server.ReceivedEmailCount);
            Assert.AreEqual(_settings.SenderConfig.SmtpClientConfig[1].Name, usedClientConfig.Name);

            Console.WriteLine($"Sending mail with smtp config name '{usedClientConfig.Name}' passed.\n\n");
            Console.WriteLine(_server.ReceivedEmail[0].Data);
        }
Ejemplo n.º 8
0
        public void SendMailWithStandardConfig()
        {
            SmtpClientConfig usedClientConfig = null;
            EventHandler <MailSenderAfterSendEventArgs> onAfterSend = (sender, args) => { usedClientConfig = args.SmtpClientConfig; };

            SendMail(onAfterSend);

            Assert.AreEqual(1, _server.ReceivedEmailCount);
            Assert.AreEqual(_settings.SenderConfig.SmtpClientConfig[0].Name, usedClientConfig.Name);

            Console.WriteLine($"Sending mail with smtp config name '{usedClientConfig.Name}' passed.\n\n");
            Console.WriteLine(_server.ReceivedEmail[0].Data);
        }
Ejemplo n.º 9
0
        public void Read_SmtpConfig_From_ConfigFile(string host, int port, string clientDomain)
        {
            var smtpConfig   = new SmtpClientConfig();
            var smtpSettings = new SmtpSection()
            {
                Network = { Host = host, Port = port, ClientDomain = clientDomain }
            };

            ChangeSmtpConfigFile(smtpSettings);
            smtpConfig.ReadSmtpConfigurationFromConfigFile();

            Assert.IsTrue(smtpConfig.SmtpHost == host && smtpConfig.SmtpPort == port && smtpConfig.ClientDomain == clientDomain);
        }
Ejemplo n.º 10
0
        public void Read_SmtpConfig_From_ConfigFile(string username, string password, bool credentialSet)
        {
            var smtpConfig   = new SmtpClientConfig();
            var smtpSettings = new SmtpSection()
            {
                Network = { UserName = username, Password = password }
            };

            ChangeSmtpConfigFile(smtpSettings);
            smtpConfig.ReadSmtpConfigurationFromConfigFile();

            Assert.AreEqual(credentialSet, smtpConfig.NetworkCredential != null);
            if (credentialSet)
            {
                Assert.AreEqual(username, ((Credential)smtpConfig.NetworkCredential)?.Username);
                Assert.AreEqual(password, ((Credential)smtpConfig.NetworkCredential)?.Password);
            }
        }
Ejemplo n.º 11
0
        public void With_AuthenticateException(Type authenticateException)
        {
            var sender = GetMailMergeSender();
            var msg    = GetMimeMessage();
            var config = new SmtpClientConfig {
                MessageOutput = MessageOutput.SmtpServer, NetworkCredential = new Credential()
            };

            sender.Config.SmtpClientConfig[0] = config;

            Exception exception;

            if (authenticateException == typeof(AuthenticationException))
            {
                exception = new AuthenticationException();
            }
            else if (authenticateException == typeof(SmtpCommandException))
            {
                exception = new SmtpCommandException(SmtpErrorCode.UnexpectedStatusCode, SmtpStatusCode.CommandNotImplemented, "unitTest");
            }
            else if (authenticateException == typeof(SmtpProtocolException))
            {
                exception = new SmtpProtocolException();
            }
            else if (authenticateException == typeof(IOException))
            {
                exception = new IOException();
            }
            else if (authenticateException == typeof(Exception))
            {
                exception = new Exception();
            }
            else
            {
                throw new ArgumentOutOfRangeException();
            }

            var smtpClient = new FakeSmtpClient {
                AuthenticateException = exception
            };

            Assert.Throws(authenticateException, () => sender.SendMimeMessage(smtpClient, msg, config));
            Assert.ThrowsAsync(authenticateException, async() => await sender.SendMimeMessageAsync(smtpClient, msg, config));
        }
Ejemplo n.º 12
0
        //[Ignore("Read_SmtpConfig_From_ConfigFile")]
        public void Read_SmtpConfig_From_ConfigFile(SmtpDeliveryMethod smtpDeliveryMethod, bool enableSsl)
        {
            var smtpConfig   = new SmtpClientConfig();
            var smtpSettings = new SmtpSection()
            {
                DeliveryMethod = smtpDeliveryMethod,
                Network        = { EnableSsl = enableSsl }
            };

            ChangeSmtpConfigFile(smtpSettings);
            smtpConfig.ReadSmtpConfigurationFromConfigFile();

            Assert.AreEqual(smtpDeliveryMethod == SmtpDeliveryMethod.Network ? MessageOutput.SmtpServer :
                            smtpDeliveryMethod == SmtpDeliveryMethod.PickupDirectoryFromIis ? MessageOutput.PickupDirectoryFromIis :
                            smtpDeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory ? MessageOutput.Directory :
                            MessageOutput.None, smtpConfig.MessageOutput);

            Assert.AreEqual(enableSsl ? MailKit.Security.SecureSocketOptions.Auto : MailKit.Security.SecureSocketOptions.None, smtpConfig.SecureSocketOptions);
        }
        public void SendMailWithSendFailure()
        {
            SmtpClientConfig usedClientConfig = null;
            Exception        sendFailure      = null;

            void OnSendFailure(object sender, MailSenderSendFailureEventArgs args)
            {
                lock (_locker)
                {
                    sendFailure      = args.Error;
                    usedClientConfig = args.SmtpClientConfig;
                }
            }

            _settings.SenderConfig.SmtpClientConfig[0].SmtpPort++; // set wrong server port, so that backup config should be taken
            _settings.SenderConfig.SmtpClientConfig[1].SmtpPort++; // set wrong server port, so that send will fail
            Assert.Catch(() => SendMail(onSendFailure: OnSendFailure));
            Assert.AreEqual(_settings.SenderConfig.SmtpClientConfig[1].Name, usedClientConfig.Name);
            Assert.AreEqual(0, _server.ReceivedEmailCount);
        }