예제 #1
0
        public IActionResult Contact(ContactFormModel model, EmailAddress information)
        {
            if (ModelState.IsValid)
            {
                MailKitEmailService emailService = new MailKitEmailService(new EmailServerConfiguration());
                EmailMessage        msgToSend    = new EmailMessage
                {
                    FromAddresses = new List <ContactFormModel> {
                        model
                    },
                    ToAddresses = new List <EmailAddress> {
                        information
                    },
                    Content = $"Message From {model.Name} \n" +
                              $"Email: {model.Email} \n" + $"Message: {model.Message}",
                    Subject = "Contact Form"
                };

                emailService.Send(msgToSend);
                return(RedirectToAction("Index"));
            }
            else
            {
                return(Contact());
            }
        }
예제 #2
0
            static async Task SendEmail()
            {
                var emailService = new MailKitEmailService(
                    Mock.Of <IMailTransport>(),
                    new SmtpSettings(),
                    Mock.Of <ILogger <MailKitEmailService> >());

                await emailService.SendEmailAsync(null);
            }
예제 #3
0
        public void SendEmailAsync_ExceptionConnected_DoesDisconnect()
        {
            var mockTransport = new Mock <IMailTransport>();

            mockTransport.Setup(t => t.IsConnected).Returns(true);
            mockTransport.Setup(
                t => t.SendAsync(
                    It.IsAny <MimeMessage>(),
                    It.IsAny <CancellationToken>(),
                    It.IsAny <ITransferProgress>()))
            .ThrowsAsync(new ServiceNotAuthenticatedException());

            async Task SendEmailAsync()
            {
                var message = new EmailMessage
                {
                    Sender = new EmailAddress {
                        Address = "*****@*****.**"
                    },
                    Recipient = new EmailAddress {
                        Address = "*****@*****.**"
                    },
                    Subject = "subject",
                };

                var service = new MailKitEmailService(
                    mockTransport.Object,
                    new SmtpSettings(),
                    Mock.Of <ILogger <MailKitEmailService> >());

                await service.SendEmailAsync(message);
            }

            Assert.ThrowsAsync <ServiceNotAuthenticatedException>(SendEmailAsync);

            mockTransport.Verify(
                t => t.DisconnectAsync(
                    It.Is <bool>(q => q),
                    It.IsAny <CancellationToken>()),
                Times.Once());
        }
예제 #4
0
        public async Task SendEmailAsync_ConnectsWithExpectedSettings()
        {
            const string host = "host";
            const int    port = 125;

            var settings = new SmtpSettings
            {
                Authentication = new SmtpAuthenticationSettings(),
                Host           = host,
                Port           = port,
            };

            var mockTransport = new Mock <IMailTransport>();

            var service = new MailKitEmailService(
                mockTransport.Object,
                settings,
                Mock.Of <ILogger <MailKitEmailService> >());

            await service.SendEmailAsync(
                new EmailMessage
            {
                Sender = new EmailAddress {
                    Address = "*****@*****.**"
                },
                Recipient = new EmailAddress {
                    Address = "*****@*****.**"
                },
                Subject = "subject",
            });

            mockTransport.Verify(
                t => t.ConnectAsync(
                    It.Is <string>(h => h == settings.Host),
                    It.Is <int>(p => p == settings.Port),
                    It.Is <SecureSocketOptions>(s => s == SecureSocketOptions.Auto),
                    It.IsAny <CancellationToken>()),
                Times.Once());
        }