示例#1
0
        public async Task <MailServerConfiguration> UpdateAdminMailServerAsync(MailServerConfiguration mailServerConfiguration)
        {
            var response = await GetAdminUrl("/mail-server")
                           .PutJsonAsync(mailServerConfiguration)
                           .ConfigureAwait(false);

            return(await HandleResponseAsync <MailServerConfiguration>(response).ConfigureAwait(false));
        }
        public static Configuration AddMailServer(this Configuration configuration, string name, Action <MailServerConfiguration> action)
        {
            var emailConfig = new MailServerConfiguration();

            action(emailConfig);
            configuration.Configurations.Add(name, emailConfig);
            return(configuration);
        }
        public static Configuration AddMailServer(this Configuration configuration, Action <MailServerConfiguration> action)
        {
            var emailConfig = new MailServerConfiguration();

            action(emailConfig);
            configuration.Configurations.Add(Constants.DefaulMailServerConfigName, emailConfig);
            return(configuration);
        }
示例#4
0
        public void Initialize(MailServerConfiguration configuration)
        {
            this.cfg = configuration;

            this.smtp = new SmtpClient()
            {
                Host        = configuration.SMTP,
                Port        = configuration.Port,
                Credentials = new NetworkCredential(configuration.Account, configuration.Password),
                EnableSsl   = configuration.UseSSL
            };
        }
        private NetMail.SmtpClient CreateClient(MailServerConfiguration config)
        {
            NetMail.SmtpClient client;
            if (config.Port > 0)
            {
                client = new NetMail.SmtpClient(config.Hostname, config.Port);
            }
            else
            {
                client = new NetMail.SmtpClient(config.Hostname);
            }

            if (!string.IsNullOrEmpty(config.Username) && !string.IsNullOrEmpty(config.Password))
            {
                client.Credentials = new NetworkCredential(config.Username, config.Password);
            }
            client.EnableSsl = config.EnableSsl;

            return(client);
        }
示例#6
0
        public ClientRegistrationResponse Post([FromBody] ClientRegistrationRequest request)
        {
            try
            {
                _logger.Info("register new client: ");
                _logger.Info(JsonConvert.SerializeObject(request, Formatting.Indented));

                var loginName = $"{request.FirstName[0].ToString().ToLowerInvariant()}.{request.LastName.ToLowerInvariant()}";

                var clientId = _userService.CreateClient(new RegisteredClient
                {
                    Country      = request.Country,
                    State        = RegisteredClientState.Pending,
                    CreationUser = loginName,
                    CreationDate = DateTime.Now,
                });

                var workContext = new WorkContext {
                    UserId = Guid.Empty, LoginName = loginName
                };

                var user = _userService.CreateUser(workContext, new User
                {
                    RegisteredClientId = clientId,
                    LoginName          = loginName,
                    FirstName          = request.FirstName,
                    LastName           = request.LastName,
                    Email                   = request.Email,
                    EmailIsValidated        = false,
                    Password                = request.EncryptedPassword,
                    PasswordLastChangedDate = DateTime.Now,
                    IsActive                = true,
                });

                var mailServerConfig = new MailServerConfiguration
                {
                    Hostname  = "smtp.gmail.com",
                    Port      = 587,
                    Username  = "******",
                    Password  = "******",
                    From      = "*****@*****.**",
                    EnableSsl = true,
                    IsActive  = true
                };

                var renderedMessage = _mailService.RenderMailContent("0000000000", "AppSolutions", "NewClientRegistrationUserMailAddressValidation", "EN", new
                {
                    FirstName        = request.FirstName,
                    LastName         = request.LastName,
                    MailAddress      = request.Email,
                    VerificationLink = $"http://localhost:29328/User/EmailVerification/{clientId}/{user.UserId}"
                });

                var message = new MailMessage
                {
                    From = new MailAddress {
                        Address = mailServerConfig.From
                    },
                    To = new List <MailAddress> {
                        new MailAddress {
                            Address = request.Email
                        }
                    },
                    IsBodyHtml = renderedMessage.IsBodyHtml,
                    Subject    = renderedMessage.Subject,
                    Body       = renderedMessage.Body,
                };

                _mailService.SendMail(mailServerConfig, message);

                return(ClientRegistrationResponse.Success(clientId, request.Email));
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(ClientRegistrationResponse.Error(e));
            }
        }
示例#7
0
        /// <summary>
        /// Creates a rasp mail handler
        /// </summary>
        /// <param name="bindingContext">the binding context</param>
        /// <returns>a rasp mail handler</returns>
        public static RaspMailHandler GetRaspMailHandlerFromBindingContext(BindingContext bindingContext)
        {
            // Get the mail binding from the context
            RaspEmailBindingElement mailBinding = (RaspEmailBindingElement)bindingContext.Binding.Elements.Find <RaspEmailBindingElement>();

            if (mailBinding == null)
            {
                throw new RaspEmailBindingElemenNotFoundtException();
            }

            // Get the type of the outbox implementation

            Type outBoxImplementationType = Type.GetType(mailBinding.OutboxImplementation);

            if (outBoxImplementationType == null)
            {
                throw new RaspMailboxImplementationCouldNotBeFoundException("outbox");
            }

            // Get the type of the inbox implementation
            Type inBoxImplementationType = Type.GetType(mailBinding.InboxImplementation);

            if (inBoxImplementationType == null)
            {
                throw new RaspMailboxImplementationCouldNotBeFoundException("inbox");
            }


            // Read the connection policy from config
            MailServerConnectionPolicy inboxConnectionPolicy = new MailServerConnectionPolicy();

            if (mailBinding.PollingInterval != null && mailBinding.PollingInterval != TimeSpan.Zero)
            {
                inboxConnectionPolicy.PollingInterval = mailBinding.PollingInterval;
            }

            inboxConnectionPolicy.AuthenticationMode = mailBinding.ReceivingAuthenticationMode;
            inboxConnectionPolicy.Port = mailBinding.ReceivingPort;

            MailServerConnectionPolicy outboxConnectionPolicy = new MailServerConnectionPolicy();

            outboxConnectionPolicy.PollingInterval    = inboxConnectionPolicy.PollingInterval;
            outboxConnectionPolicy.AuthenticationMode = mailBinding.SendingAuthenticationMode;
            outboxConnectionPolicy.Port = mailBinding.SendingPort;


            MailServerConfiguration recievingServerConfiguration = new MailServerConfiguration(
                mailBinding.ReceivingServerAddress,
                mailBinding.ReceivingUserName,
                mailBinding.ReceivingPassword,
                mailBinding.ReplyAddress,
                inboxConnectionPolicy);
            MailServerConfiguration sendingServerConfiguration = new MailServerConfiguration(
                mailBinding.SendingServerAddress,
                mailBinding.SendingUserName,
                mailBinding.SendingPassword,
                mailBinding.ReplyAddress,
                outboxConnectionPolicy);
            MailHandlerConfiguration handlerConfiguration = new MailHandlerConfiguration(
                outBoxImplementationType,
                inBoxImplementationType,
                sendingServerConfiguration,
                recievingServerConfiguration);

            return(new RaspMailHandler(handlerConfiguration));
        }
        public MailServiceOperationResponse SendMail(MailServerConfiguration server, MailMessage message)
        {
            ArgumentCheck.IsNotNull(server, $"{nameof(server)} must not be null");
            ArgumentCheck.IsNotNullOrEmpty(server.Hostname, $"{nameof(server.Hostname)} must not be null or empty");
            ArgumentCheck.IsNotNullOrEmpty(server.From, $"{nameof(server.From)} must not be null or empty");

            ArgumentCheck.IsNotNull(message, $"{nameof(message)} must not be null");
            ArgumentCheck.IsNotNull(message.To, $"{nameof(message.To)} must not be null");
            ArgumentCheck.IsTrue(message.To.Count > 0, $"{nameof(message.To)} must contain at least 1 address");
            ArgumentCheck.IsFalse(message.To.Any(o => string.IsNullOrEmpty(o.Address)), $"{nameof(MailAddress.Address)} fields must not be null or empty");
            ArgumentCheck.IsNotNullOrEmpty(message.Body, $"{nameof(message.Body)}");
            ArgumentCheck.IsNotNullOrEmpty(message.Subject, $"{nameof(message.Subject)}");

            try
            {
                NetMail.MailMessage netMessage = new NetMail.MailMessage();

                // TO ##########################
                if (message.From == null)
                {
                    netMessage.From = new NetMail.MailAddress(message.From.Address);
                }
                else
                {
                    netMessage.From = new NetMail.MailAddress(server.From);
                }

                // TO ##########################
                foreach (var adr in message.To)
                {
                    if (string.IsNullOrEmpty(adr.Address))
                    {
                        continue;
                    }
                    NetMail.MailAddress address = new NetMail.MailAddress(adr.Address);
                    if (!string.IsNullOrEmpty(adr.DisplayName))
                    {
                        address = new NetMail.MailAddress(adr.Address, adr.DisplayName);
                    }
                    netMessage.To.Add(address);
                }

                // CC ##########################
                if (message.CC != null)
                {
                    foreach (var adr in message.CC)
                    {
                        if (string.IsNullOrEmpty(adr.Address))
                        {
                            continue;
                        }
                        NetMail.MailAddress address = new NetMail.MailAddress(adr.Address);
                        if (!string.IsNullOrEmpty(adr.DisplayName))
                        {
                            address = new NetMail.MailAddress(adr.Address, adr.DisplayName);
                        }
                        netMessage.CC.Add(address);
                    }
                }

                // BCC ##########################
                if (message.Bcc != null)
                {
                    foreach (var adr in message.Bcc)
                    {
                        if (string.IsNullOrEmpty(adr.Address))
                        {
                            continue;
                        }
                        NetMail.MailAddress address = new NetMail.MailAddress(adr.Address);
                        if (!string.IsNullOrEmpty(adr.DisplayName))
                        {
                            address = new NetMail.MailAddress(adr.Address, adr.DisplayName);
                        }
                        netMessage.Bcc.Add(address);
                    }
                }

                // ################################
                netMessage.Subject    = message.Subject;
                netMessage.Body       = message.Body;
                netMessage.IsBodyHtml = message.IsBodyHtml;

                // ################################
                using (NetMail.SmtpClient client = CreateClient(server))
                {
                    client.Send(netMessage);
                }
                _logger.Info($"Mail sent: '{message.Subject}' to '{string.Join(';', message.To.Select(o => o.Address).ToList())}'");
                return(MailServiceOperationResponse.CreateSuccess());
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(MailServiceOperationResponse.CreateInternalServerError(e));
            }
        }