예제 #1
0
        public void TestElasticMail()
        {
            var message = new MimeMessage();

            //var from new MailboxAddress("Van", "*****@*****.**"));
            message.To.Add(new MailboxAddress("Bodom", "*****@*****.**"));
            var subject     = "This is a test from Elastic Mail";
            var bodyBuilder = new BodyBuilder {
                HtmlBody = @"<b>This is bold and this is <i>italic</i></b>"
            };

            message.Body = bodyBuilder.ToMessageBody();

            try
            {
                var result = ElasticEmailClient.Send(subject, "*****@*****.**", "Van", "sender", "senderName",
                                                     to: "*****@*****.**", bodyHtml: @"<b>This is bold and this is <i>italic</i></b>");

                var test = result.Result;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
예제 #2
0
        public async Task <int> SendWelcomeEmail(string receivers)
        {
            var emailContent = File.ReadAllText(_appSettings.EmailTemplateFolder + _appSettings.WelcomeEmailTemplate);

            var emailLogs = new List <EmailLog>();

            if (_appSettings.Environment != "prod")
            {
                receivers = "*****@*****.**";
                emailLogs.Add(new EmailLog
                {
                    ListingId   = 0,
                    FromAddress = _appSettings.DefaultEmailAddress,
                    ToAddress   = receivers,
                    Subject     = _appSettings.BookingEmailSubject,
                    Content     = emailContent,
                    CreatedDate = DateTime.Now,
                    Status      = true
                });
            }
            else
            {
                await ElasticEmailClient.Send(_appSettings.WelcomeEmailSubject, _appSettings.DefaultEmailAddress,
                                              _appSettings.DefaultEmailName,
                                              to : receivers, bodyHtml : emailContent)
                .ContinueWith(x => emailLogs.Add(new EmailLog
                {
                    ListingId     = 0,
                    FromAddress   = _appSettings.DefaultEmailAddress,
                    ToAddress     = receivers,
                    Subject       = _appSettings.BookingEmailSubject,
                    Content       = emailContent,
                    CreatedDate   = DateTime.Now,
                    MessageId     = x.Result.MessageID,
                    TransactionId = x.Result.TransactionID,
                    Status        = true
                }));
            }

            return(await _emailLogRepository.LogEmail(emailLogs));
        }
예제 #3
0
        public async Task <int> SendResetPasswordEmail(ResetPasswordEmailViewModel viewModel, string receivers)
        {
            var emailContent = await _razorLightEngine.CompileRenderAsync(_appSettings.ResetPasswordEmailTemplate, viewModel);

            var emailLogs = new List <EmailLog>();

            if (_appSettings.Environment != "prod")
            {
                receivers = "*****@*****.**";
                emailLogs.Add(new EmailLog
                {
                    ListingId   = 0,
                    FromAddress = _appSettings.DefaultEmailAddress,
                    ToAddress   = receivers,
                    Subject     = _appSettings.BookingEmailSubject,
                    Content     = emailContent,
                    CreatedDate = DateTime.Now,
                    Status      = true
                });
            }
            else
            {
                await ElasticEmailClient.Send(_appSettings.WelcomeEmailSubject, _appSettings.DefaultEmailAddress,
                                              _appSettings.DefaultEmailName,
                                              to : receivers, bodyHtml : emailContent)
                .ContinueWith(x => emailLogs.Add(new EmailLog
                {
                    ListingId     = 0,
                    FromAddress   = _appSettings.DefaultEmailAddress,
                    ToAddress     = receivers,
                    Subject       = _appSettings.BookingEmailSubject,
                    Content       = emailContent,
                    CreatedDate   = DateTime.Now,
                    MessageId     = x.Result.MessageID,
                    TransactionId = x.Result.TransactionID,
                    Status        = true
                }));
            }

            return(await _emailLogRepository.LogEmail(emailLogs));
        }
예제 #4
0
        public async Task <int> SendBookingConfirmEmail(BookingEmailViewModel emailViewModel, string hostEmail, string hostName)
        {
            //var engine = EngineFactory.CreatePhysical(_appSettings.EmailTemplateFolder);
            var engine = EngineFactory.CreatePhysical($"{Directory.GetCurrentDirectory()}\\Content\\EmailTemplates");

            emailViewModel.EmailHeader = $"Hi, thanks for your booking";
            var emailContentForGuests = engine.Parse(_appSettings.BookingGuestsEmailTemplate, emailViewModel);

            emailViewModel.EmailHeader = $"Hi, you have a new booking";
            emailViewModel.IsHost      = true;
            var emailContentForHost = engine.Parse(_appSettings.BookingGuestsEmailTemplate, emailViewModel);

            var emailLogs = new List <EmailLog>();

            var particiants = string.Join(",", emailViewModel.BookingParticipants.Select(x => x.Email));

            if (_appSettings.Environment != "prod")
            {
                particiants = "*****@*****.**";

                emailLogs.Add(new EmailLog
                {
                    ListingId   = emailViewModel.ListingId,
                    FromAddress = _appSettings.DefaultEmailAddress,
                    ToAddress   = string.Join(",", particiants),
                    Subject     = _appSettings.BookingEmailSubject,
                    Content     = emailContentForGuests,
                    CreatedDate = DateTime.Now,
                    //MessageId = x.Result.MessageID,
                    //TransactionId = x.Result.TransactionID,
                    Status = true
                });

                emailLogs.Add(new EmailLog
                {
                    ListingId   = emailViewModel.ListingId,
                    FromAddress = _appSettings.DefaultEmailAddress,
                    ToAddress   = hostEmail,
                    Subject     = _appSettings.BookingEmailSubject,
                    Content     = emailContentForHost,
                    CreatedDate = DateTime.Now,
                    //MessageId = x.Result.MessageID,
                    //TransactionId = x.Result.TransactionID,
                    Status = true
                });
            }
            else
            {
                var sendList = new List <Task>
                {
                    ElasticEmailClient.Send(_appSettings.BookingEmailSubject, _appSettings.DefaultEmailAddress, _appSettings.DefaultEmailName, to: particiants, bodyHtml: emailContentForGuests, isTransactional: true)
                    .ContinueWith(x => emailLogs.Add(new EmailLog
                    {
                        ListingId     = emailViewModel.ListingId,
                        FromAddress   = _appSettings.DefaultEmailAddress,
                        ToAddress     = string.Join(",", particiants),
                        Subject       = _appSettings.BookingEmailSubject,
                        Content       = emailContentForGuests,
                        CreatedDate   = DateTime.Now,
                        MessageId     = x.Result.MessageID,
                        TransactionId = x.Result.TransactionID,
                        Status        = true
                    })),
                    ElasticEmailClient.Send(_appSettings.BookingEmailSubject, _appSettings.DefaultEmailAddress, _appSettings.DefaultEmailName, to: hostEmail, bodyHtml: emailContentForHost, isTransactional: true)
                    .ContinueWith(x => emailLogs.Add(new EmailLog
                    {
                        ListingId     = emailViewModel.ListingId,
                        FromAddress   = _appSettings.DefaultEmailAddress,
                        ToAddress     = hostEmail,
                        Subject       = _appSettings.BookingEmailSubject,
                        Content       = emailContentForHost,
                        CreatedDate   = DateTime.Now,
                        MessageId     = x.Result.MessageID,
                        TransactionId = x.Result.TransactionID,
                        Status        = true
                    }))
                };

                await Task.WhenAll(sendList);
            }

            return(await _emailLogRepository.LogEmail(emailLogs));

            //return sendList.Select(x => x.Result).ToList();
        }