コード例 #1
0
        public async Task <Response> SendMail(EmailParameters model)
        {
            MailSendingModel emailmodel;

            try
            {
                emailmodel = await PrepareEmail(model);
            }
            catch (ArgumentNullException ex)
            {
                await AddLogInfo(string.Empty, ex.Message);

                throw new ArgumentNullException(ex.Message, ex);
            }

            var msg      = MailHelper.CreateSingleEmailToMultipleRecipients(emailmodel.From, emailmodel.To, emailmodel.Subject, emailmodel.PlainTextContent, emailmodel.HtmlContent);
            var response = await _client.SendEmailAsync(msg);

            if (response.StatusCode != System.Net.HttpStatusCode.Accepted)
            {
                await AddLogInfo(response.StatusCode.ToString(), $"Email send is failed for DeviceID:{model.UDID}");

                throw new ArgumentException(response.StatusCode.ToString());
            }

            await AddLogInfo(response.StatusCode.ToString(), $"Email Sent for DeviceID:{model.UDID}");

            return(response);
        }
コード例 #2
0
        public bool ResolveCustomerSupportIssue([FromUri] int ID, [FromUri] string resolvedMessage, [FromUri] string consumerName, [FromUri] string consumerEmail)
        {
            try
            {
                tblCustomerSupport customerSupportObj = new tblCustomerSupport();
                if (ID > 0 && resolvedMessage != string.Empty)
                {
                    customerSupportObj = db.tblCustomerSupports.Where(x => x.ID == ID).FirstOrDefault();
                    customerSupportObj.ResolvedMessage = resolvedMessage;
                    customerSupportObj.IsResolved      = true;
                    customerSupportObj.ResolvedDate    = DateTime.Now;
                    customerSupportObj.Severity        = 0;

                    db.Entry(customerSupportObj).State = EntityState.Modified;
                    db.SaveChanges();

                    EmailParameters param = new EmailParameters();
                    param.ID = ID;
                    param.fromEmailAddress = "*****@*****.**";
                    param.toEmailAddress   = consumerEmail;
                    param.consumerName     = consumerName;
                    param.resolvedMessage  = resolvedMessage;

                    SendEmail.TriggerMail(param);

                    return(true);
                }
            }
            catch
            {
                return(false);
            }

            return(false);
        }
コード例 #3
0
        public string SendConsumerSupportEmail([FromUri] string from, [FromUri] string message)
        {
            var result      = string.Empty;
            var consumerObj = LoadConsumer(Session.Login_ID)[0];

            try
            {
                if (consumerObj != null)
                {
                    var complaintID = SaveCustomerComplaint(consumerObj.ID, from, message);
                    if (complaintID > 0)
                    {
                        EmailParameters param = new EmailParameters()
                        {
                            ID = complaintID,
                            fromEmailAddress = from,
                            toEmailAddress   = "*****@*****.**",
                            consumerName     = consumerObj.ConsumerName,
                            resolvedMessage  = message
                        };
                        SendEmail.TriggerMail(param);

                        result = string.Empty;
                    }
                }
            }
            catch
            {
                result = "Error";
            }


            return(result);
        }
コード例 #4
0
        public async Task <IActionResult> Email(EmailParameters parameters)
        {
            parameters.Subject   = "test";
            parameters.Body      = "my email";
            parameters.ToAddress = "*****@*****.**";

            var email = new EmailMessage();

            email.ToAddresses.Add(new EmailAddress(parameters.ToName, parameters.ToAddress));
            //email.Subject = parameters.Subject; //for demo force a Template to reduce spam
            //email.Body = parameters.Body;

            if (string.IsNullOrEmpty(parameters.TemplateName))
            {
                parameters.TemplateName = "Test";
            }

            switch (parameters.TemplateName)
            {
            case "Test":
                email = EmailTemplates.BuildTestEmail(email, parameters.ToName); //example of email Template usage
                break;

            default:
                break;
            }

            email.FromAddresses.Add(new EmailAddress("*****@*****.**", "*****@*****.**"));
            _logger.LogInformation("Test Email: {0}", email.Subject);

            await _emailService.SendEmailAsync(email);

            return(Ok(new { success = "true" }));
        }
コード例 #5
0
        public virtual void SendEmail(EmailParameters actionParameters)
        {
            string title   = actionParameters.title;
            string message = actionParameters.message;
            string to      = actionParameters.to;

            Request.GetOwinContext().GetDependencyResolver().Resolve <IEmailService>().SendEmail(to, title, message);
        }
コード例 #6
0
        public void SmtpSend(out bool _Succeed)
        {
            EmailParameters _EmailParameters = new EmailParameters();

            _Succeed = false;
            //   创建TcpClient对象,   并建立连接
            TcpClient tcp = null;

            try { tcp = new TcpClient(_EmailParameters.server, EmailParameters.port); }
            catch { return; }

            if (ReadString(tcp.GetStream()).Substring(0, 3) != "220 ")//获取连接信息
            {
                return;
            }
            if (!Command(tcp.GetStream(), "EHLO   Localhost ", "250 "))//   开始进行服务器认证
            {
                return;
            }
            if (!Command(tcp.GetStream(), "AUTH   LOGIN ", "334 "))//   需要身份验证
            {
                return;
            }
            if (!Command(tcp.GetStream(), ToBase64(_EmailParameters.username), "334 "))//   此处将username转换为Base64码
            {
                return;
            }
            if (!Command(tcp.GetStream(), ToBase64(_EmailParameters.password), "235 "))//   此处将password转换为Base64码
            {
                return;
            }
            //   准备发送
            WriteString(tcp.GetStream(), "mail   From:   " + _EmailParameters.from);
            WriteString(tcp.GetStream(), "rcpt   to:   " + _EmailParameters.to);
            WriteString(tcp.GetStream(), "data ");
            //   发送邮件头
            WriteString(tcp.GetStream(), "Date:   " + DateTime.Now);                                                     //   时间
            WriteString(tcp.GetStream(), "From:   " + _EmailParameters.fromname + " < " + _EmailParameters.from + "> "); //   发件人
            WriteString(tcp.GetStream(), "Subject:   " + _EmailParameters.subject);                                      //   主题
            WriteString(tcp.GetStream(), "To: " + _EmailParameters.toname + " < " + _EmailParameters.to + "> ");         //   收件人
            //邮件格式
            WriteString(tcp.GetStream(), "Reply-To: " + _EmailParameters.from);                                          //   回复地址
            WriteString(tcp.GetStream(), "X-Priority: " + EmailParameters.priority);                                     //   优先级
            WriteString(tcp.GetStream(), "KoEnemy-Version:1.0 ");                                                        //   MIME版本
            //   数据ID,随意
            WriteString(tcp.GetStream(), "Content-Type:   text/html;charset= " + EmailParameters.languageencoding);
            WriteString(tcp.GetStream(), "Content-Transfer-Encoding: " + EmailParameters.encoding);
            WriteString(tcp.GetStream(), " ");
            WriteString(tcp.GetStream(), " ");
            WriteString(tcp.GetStream(), _EmailParameters.content);

            WriteString(tcp.GetStream(), ". ");   //   最后写完了,输入 ". "
            //   关闭连接
            tcp.Close();
            _Succeed = true;
        }
コード例 #7
0
        public async Task ShouldReturnPrepareEmailWithParams()
        {
            // Arrange
            string   UDID          = Fixture.Create <string>();
            string   Address       = Fixture.Create <string>();
            string   Town          = Fixture.Create <string>();
            string   PostCode      = Fixture.Create <string>();
            string   Country       = Fixture.Create <string>();
            string   Notes         = Fixture.Create <string>();
            DateTime LastHeartBeat = Fixture.Create <DateTime>();
            string   Cause         = Fixture.Create <string>();
            string   EmailFrom     = Fixture.Create <string>();
            string   EmailTo       = Fixture.Create <string>();
            string   Subject       = Fixture.Create <string>();
            string   htmlContent   = Fixture.Create <string>();
            string   cause         = Fixture.Create <string>();
            Guid     idTempl       = Fixture.Create <Guid>();
            string   MailTo        = Fixture.Create <string>();

            EmailParameters emailParams = Fixture.Build <EmailParameters>()
                                          .With(x => x.Address, Address)
                                          .With(x => x.Cause, Cause)
                                          .With(x => x.Town, Town)
                                          .With(x => x.PostCode, PostCode)
                                          .With(x => x.Country, Country)
                                          .With(x => x.Notes, Notes)
                                          .With(x => x.MailTo, MailTo)
                                          .With(x => x.LastHeartBeat, LastHeartBeat)
                                          .With(x => x.UDID, UDID)
                                          .Without(x => x.EmailsTo)
                                          .Create();

            MessageTemplate template = Fixture.Build <MessageTemplate>()
                                       .With(x => x.Cause, cause)
                                       .With(x => x.Id, idTempl)
                                       .With(x => x.Subject, Subject)
                                       .With(x => x.MessageBody, htmlContent)
                                       .Without(x => x.TypeOfMessages)
                                       .Without(x => x.TypeOfMessageId)
                                       .Create();

            List <MessageTemplate> listTemp = new List <MessageTemplate>();

            listTemp.Add(template);

            _messageRepositoryMock.Setup(x => x.GetAsync(It.IsAny <Expression <Func <MessageTemplate, bool> > >())).Returns(Task.FromResult(listTemp.AsQueryable()));

            // Act
            var actual = await _mailerService.PrepareEmail(emailParams);

            //Assert
            actual.HtmlContent.Should().Be(htmlContent);
            actual.Subject.Should().Be(Subject);
            actual.From.Email.Should().Be(_mailerOptionsMonitorMock.Object.CurrentValue.From);
        }
コード例 #8
0
        public virtual async Task <Guid> SendEmailUsingBackgroundJobService(EmailParameters actionParameters)
        {
            string title   = actionParameters.title;
            string message = actionParameters.message;
            string to      = actionParameters.to;

            string jobId = await BackgroundJobWorker.Value
                           .PerformBackgroundJobAsync <IEmailService>(emailService => emailService.SendEmail(to, title, message));

            return(Guid.Parse(jobId));
        }
コード例 #9
0
        public async Task ShouldReturnArgumentNullException()
        {
            // Arrange

            EmailParameters emailParams = Fixture.Build <EmailParameters>()
                                          .Without(x => x.EmailsTo)
                                          .Create();

            // Act
            Func <Task> actual = async() => await _mailerService.PrepareEmail(emailParams);

            //Assert
            await actual.Should().ThrowAsync <ArgumentNullException>();
        }
コード例 #10
0
        static void Execute(EmailParameters parameters)
        {
            var apiKey = "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";
            var client = new SendGridClient(apiKey);
            var msg    = new SendGridMessage()
            {
                From             = new EmailAddress(parameters.fromEmailAddress, "Admin"),
                Subject          = "Consumer Complaint No: " + parameters.ID,
                PlainTextContent = parameters.resolvedMessage
            };

            msg.AddTo(new EmailAddress(parameters.toEmailAddress, parameters.consumerName));
            var response = client.SendEmailAsync(msg);
        }
コード例 #11
0
        public async Task ShouldReturnDictionaryWithParams()
        {
            // Arrange
            string   UDID          = Fixture.Create <string>();
            string   Address       = Fixture.Create <string>();
            string   Town          = Fixture.Create <string>();
            string   PostCode      = Fixture.Create <string>();
            string   Country       = Fixture.Create <string>();
            string   Notes         = Fixture.Create <string>();
            DateTime LastHeartBeat = Fixture.Create <DateTime>();
            string   Cause         = Fixture.Create <string>();
            string   MailTo        = Fixture.Create <string>();

            EmailParameters emailParams = Fixture.Build <EmailParameters>()
                                          .With(x => x.Address, Address)
                                          .With(x => x.Cause, Cause)
                                          .With(x => x.Town, Town)
                                          .With(x => x.PostCode, PostCode)
                                          .With(x => x.Country, Country)
                                          .With(x => x.Notes, Notes)
                                          .With(x => x.MailTo, MailTo)
                                          .With(x => x.LastHeartBeat, LastHeartBeat)
                                          .With(x => x.UDID, UDID)
                                          .Without(x => x.EmailsTo)
                                          .Create();

            Dictionary <string, string> expected = new Dictionary <string, string> {
                { "address", Address },
                { "cause", Cause },
                { "town", Town },
                { "postcode", PostCode },
                { "country", Country },
                { "notes", Notes },
                { "mailto", MailTo },
                { "lastheartbeat", LastHeartBeat.ToString() },
                { "udid", UDID },
                { "emailsto", null }
            };

            // Act
            var actual = MailerParser.PrepareDictionaryParams(emailParams);

            //Assert
            Assert.Equal(expected, actual);
        }
コード例 #12
0
        public async Task SendEmail(EmailParameters model, string username)
        {
            var confirmedBy = string.IsNullOrEmpty(username) ? "Admin" : username;

            var htmlFilePath = "./Templates/" + model.Template + ".html";
            var builder      = new BodyBuilder
            {
                HtmlBody = File.ReadAllText(htmlFilePath)

                           .Replace("^Fullname^", (model.Firstname + " " + model.Lastname))
                           .Replace("^Date^", model.Date)
                           .Replace("^Time^", model.Time)
                           .Replace("^Email^", model.Email)
                           .Replace("^Space^", model.Space)
                           .Replace("^Message^", model.Message)
                           .Replace("^ContactNumber^", model.ContactNumber)
                           .Replace("^Bill^", model.Bill)
                           .Replace("^Period^", model.Period)
                           .Replace("^Rate^", model.Rate)
                           .Replace("^Duration^", model.Duration)
                           .Replace("^Number^", model.GuestCount.ToString())
                           .Replace("^RoomType^", model.RoomType)
                           .Replace("^ReferenceNumber^", model.ReferenceNumber)
                           .Replace("^ConfirmedBy^", confirmedBy)
                           .Replace("^Link^", model.Link)
            };

            var emailMessage = new MimeMessage
            {
                From =
                {
                    new MailboxAddress("Dev Partners", _options.Value.SenderEmail)
                },
                To =
                {
                    new MailboxAddress("Dev Partners", model.IsAdmin ? model.Recipient : model.Recipient)
                },
                Subject = model.Subject,
                Body    = builder.ToMessageBody()
            };

            await SendEmailAsync(emailMessage);
        }
コード例 #13
0
        public async Task <IActionResult> Send(EmailParameters parameters)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.SelectMany(state => state.Errors)
                                  .Select(error => error.ErrorMessage)
                                  .FirstOrDefault()));
            }

            var email = new EmailMessage();

            email.ToAddresses.Add(new EmailAddress(parameters.ToName, parameters.ToAddress));

            //This forces all emails from the API to use the Test template to prevent spam
            parameters.TemplateName = "Test";

            //Send a Template email or a custom one since it is hardcoded to Test template it will not do a custom email.
            if (!string.IsNullOrEmpty(parameters.TemplateName))
            {
                switch (parameters.TemplateName)
                {
                case "Test":
                    email = EmailTemplates.BuildTestEmail(email);     //example of email Template usage
                    break;

                default:
                    break;
                }
            }
            else
            {
                email.Subject = parameters.Subject;
                email.Body    = parameters.Body;
            }

            //Add a new From Address if you so choose, default is set in appsettings.json
            //email.FromAddresses.Add(new EmailAddress("New From Name", "*****@*****.**"));
            _logger.LogInformation("Test Email: {0}", email.Subject);

            await _emailService.SendEmailAsync(email);

            return(Ok(new { success = "true" }));
        }
コード例 #14
0
        public EmailParameters GetConfirmEmailParameter(BookLog book, bool isAdmin, ClientMaster client)
        {
            var bookDate = GetPeriod(book.DateOfArrival.Value, book.DateOfDeparture.Value, book.TimeIn.Value, book.TimeOut.Value);
            var duration = GetDuration(book);
            var bill     = "₱" + GetBill(book);

            if (!isAdmin)
            {
                var emailParams = new EmailParameters()
                {
                    Subject         = $"Dev Hub: Book Confirmed!",
                    Firstname       = client.FirstName,
                    Lastname        = client.LastName,
                    Email           = client.Email,
                    Space           = GetSpaceName(book.SpaceType.Value),
                    Recipient       = client.Email,
                    IsAdmin         = false,
                    Date            = bookDate.DateArrival,
                    Rate            = GetBookRate(book.FrequencyType.Value, book.SpaceType.Value),
                    Template        = "Confirm-Booking-Template",
                    ReferenceNumber = book.BookingRefCode,
                    Time            = bookDate.TimeIn,
                    Period          = bookDate.Period(),
                    ContactNumber   = client.ContactNumber1 + " , " + client.ContactNumber2,
                    Duration        = duration,
                    Bill            = bill
                };
                switch (book.SpaceType)
                {
                case (int)SpaceEnum.ConferenceMeeting:
                    emailParams.Template = "Confirm-Booking-Conference-Template";
                    return(emailParams);

                default:
                    return(emailParams);
                }
            }
            else
            {
                return(null);
            }
        }
コード例 #15
0
        public async Task <IActionResult> EmailTest(EmailParameters parameters)
        {
            //Todo fix these parameters
            parameters.Subject   = "test";
            parameters.Body      = "my email";
            parameters.ToAddress = "*****@*****.**";

            var email = new EmailMessage();

            email.ToAddresses.Add(new EmailAddress(parameters.ToAddress, parameters.ToAddress));
            email.Subject = parameters.Subject;
            email.Body    = parameters.Body;
            email.FromAddresses.Add(new EmailAddress("*****@*****.**", "*****@*****.**"));

            _logger.LogInformation("Test Email: {0}", email.Subject);

            await _emailService.SendEmailAsync(email);

            return(Ok(new { success = "true" }));
        }
コード例 #16
0
        public async Task <APIResponse> Send(EmailParameters parameters)
        {
            if (!ModelState.IsValid)
            {
                return(new APIResponse(400, "User Model is Invalid"));
            }

            var email = new EmailMessage();

            email.ToAddresses.Add(new EmailAddress(parameters.ToName, parameters.ToAddress));

            //This forces all emails from the API to use the Test template to prevent spam
            parameters.TemplateName = "Test";

            //Send a Template email or a custom one since it is hardcoded to Test template it will not do a custom email.
            if (!string.IsNullOrEmpty(parameters.TemplateName))
            {
                switch (parameters.TemplateName)
                {
                case "Test":
                    email = EmailTemplates.BuildTestEmail(email);     //example of email Template usage
                    break;

                default:
                    break;
                }
            }
            else
            {
                email.Subject = parameters.Subject;
                email.Body    = parameters.Body;
            }

            //Add a new From Address if you so choose, default is set in appsettings.json
            //email.FromAddresses.Add(new EmailAddress("New From Name", "*****@*****.**"));
            _logger.LogInformation("Test Email: {0}", email.Subject);

            await _emailService.SendEmailAsync(email);

            return(new APIResponse(200, "Email Successfuly Sent"));
        }
コード例 #17
0
        public async Task SendEmail(EmailParameters model)
        {
            var confirmedBy = "Admin";

            var htmlFilePath = "./email-html-templates/" + model.Template + ".html";
            var builder      = new BodyBuilder
            {
                HtmlBody = File.ReadAllText(htmlFilePath)

                           .Replace("^Fullname^", (model.FullName))
                           .Replace("^DateTime^", model.DateTimeOfArrival)
                           .Replace("^Email^", model.Email)
                           .Replace("^Space^", model.AmenityName)
                           .Replace("^Message^", model.Message)
                           .Replace("^ContactNumber^", model.ContactNumber)
                           .Replace("^ReferenceNumber^", model.ReferenceNumber)
                           .Replace("^ConfirmedBy^", confirmedBy)
                           .Replace("^Link^", model.Link)
                           .Replace("^GuestCount^", model.GuestCount)
                           .Replace("^DatePeriod^", model.Period)
                           .Replace("^Duration^", model.Duration)
                           .Replace("^Rate^", "₱ " + model.Rate)
            };

            var emailMessage = new MimeMessage
            {
                From =
                {
                    new MailboxAddress("Dev Partners", _options.Value.SenderEmail)
                },
                To =
                {
                    new MailboxAddress("Dev Partners", model.IsAdmin ? model.Recipient : model.Email)
                },
                Subject = model.Subject,
                Body    = builder.ToMessageBody()
            };

            await SendEmailAsync(emailMessage);
        }
コード例 #18
0
        /// <summary>
        /// Составление и отправка Email.
        /// Что нужно подготовить:
        /// 0. Настройка для отправки письма:
        /// - параметры почтового сервера (host, port, ssl)
        /// - данные отправителя (username, password)
        /// - email отправителя (может быть равен username по умолчанию)
        /// 1. Имена файлов для вложения в письмо
        /// 2. Адрес получателя
        /// 3. Тема письма
        /// 4. Данные для тела письма (Номер документа, дата дела...)
        /// </summary>
        static void sendEmailByNewInterface(EmailSenderConfig senderConfig, string attachFileName, string AddressTo, string DocNumber, DateTime RequestDate, WebParserResult parserResult)
        {
            // Тема письма
            string mailSubject = $"--==Документ {DocNumber} от {RequestDate} ==--";

            // Тело письма
            string mailBodyText = ComposeMailTextBody(DocNumber, parserResult);
            string mailBodyHtml = ComposeMailHtmlBody(DocNumber, parserResult);

            EmailParameters emailParameters = new EmailParameters()
            {
                message = new EmailMessageParameters()
                {
                    AddressFrom      = senderConfig.username,
                    AddressFromAlias = senderConfig.usernameAlias,
                    AddressTo        = AddressTo,
                    Subject          = mailSubject,
                    BodyText         = mailBodyText,
                    BodyHtml         = mailBodyHtml
                }
            };

            if (!string.IsNullOrEmpty(attachFileName))
            {
                emailParameters.attachments = new List <EmailAttachmentParameters>()
                {
                    new EmailAttachmentParameters()
                    {
                        FilePath  = attachFileName,
                        FileName  = Path.GetFileName(attachFileName),
                        MediaType = MediaTypeNames.Application.Pdf
                    }
                };
            }

            IEmailSender   emailSender   = new OnlineEmailSender(senderConfig);
            IEmailComposer emailComposer = new OnlineEmailComposer(emailParameters, emailSender);

            emailComposer.ComposeAndSendEmail();
        }
コード例 #19
0
        public async Task <MailSendingModel> PrepareEmail(EmailParameters emailParams)
        {
            MailSendingModel email = new MailSendingModel();

            emailParams.MailTo = _toMail;

            Dictionary <string, string> parameters = MailerParser.PrepareDictionaryParams(emailParams);

            var emailtemplate = (await _messagetTemplateRepository.GetAsync(Filtering(emailParams.Cause)))
                                .OrderByDescending(x => x.CreateOn)
                                .FirstOrDefault();

            if (emailtemplate != null)
            {
                email.Subject = MailerParser.ProcessTemplate(emailtemplate.Subject, parameters);
                email.From    = new EmailAddress(_from);
                email.To.AddRange(_to?.Select(x => new EmailAddress(x)) ?? new List <EmailAddress>());
                //email.To.AddRange(emailParams.EmailsTo?.Select(x => new EmailAddress(x)) ?? new List<EmailAddress>());/
                email.HtmlContent = MailerParser.ProcessTemplate(emailtemplate.MessageBody, parameters);
                return(email);
            }
            throw new ArgumentNullException("Message", "Email template not found");
        }
コード例 #20
0
        public EmailParameters BookLogForEmailParam(BookLogForEmailModel model, string template, string uri, bool isAdmin)
        {
            var emailParams = new EmailParameters {
                Subject           = $"Dev Hub: New Booking Request!",
                FullName          = model.FullName,
                Email             = model.Email,
                AmenityName       = model.AmenityName,
                Recipient         = model.Recipient,
                Template          = template,
                DateTimeOfArrival = model.DateTimeOfArrival.ToString(),
                IsFromDevhub      = true,
                Message           = !string.IsNullOrEmpty(model.Remarks) ? model.Remarks : "No Message",
                ContactNumber     = string.Concat(model.ContactNumber),
                IsAdmin           = isAdmin,
                Rate            = model.RateValue.ToString(".00") + " - " + model.FrequencyDescription,
                GuestCount      = model.Capacity,
                ReferenceNumber = model.BookingRefCode,
                Link            = _options.Value.Protocol + uri + "/#!/Confirm?token=" + model.BookingRefCode + model.BookingID.ToString(),
                Period          = model.DatePeriod,
                Duration        = model.Duration
            };

            return(emailParams);
        }
コード例 #21
0
 public static Dictionary <string, string> PrepareDictionaryParams(EmailParameters emailParams)
 {
     return(typeof(EmailParameters)
            .GetProperties()
            .ToDictionary(c => c.Name.ToLower(), c => c.GetValue(emailParams)?.ToString()));
 }
コード例 #22
0
 public OnlineEmailComposer(EmailParameters emailParameters, IEmailSender emailSender)
 {
     _emailParameters = emailParameters;
     _emailSender     = emailSender;
 }
コード例 #23
0
        public virtual async Task <Guid> SendEmailUsingBackgroundJobServiceAndPushAfterThat(EmailParameters actionParameters)
        {
            string title   = actionParameters.title;
            string message = actionParameters.message;
            string to      = actionParameters.to;

            string jobId = await BackgroundJobWorker.Value
                           .PerformBackgroundJobAsync <IEmailService>(emailService => emailService.SendEmail(to, title, message));

            string secondJobId = await BackgroundJobWorker.Value
                                 .PerformBackgroundJobWhenAnotherJobSucceededAsync <IMessageSender>(jobId,
                                                                                                    messageSender => messageSender.SendMessageToUsers("OnEmailSent", new { Title = title }, new[] { to }));

            return(Guid.Parse(secondJobId));
        }
コード例 #24
0
        public EmailParameters GetApproveEmailParameter(EmailParametersModel model, bool isAdmin)
        {
            var space     = GetSpaceName(model.UserInfo.SpaceType);
            var firstname = model.UserInfo.HaveBookedBefore ? model.Client.FirstName : model.UserInfo.FirstName;
            var lastname  = model.UserInfo.HaveBookedBefore ? model.Client.LastName : model.UserInfo.LastName;
            var rate      = GetBookRate(model.UserInfo.FrequencyType, model.UserInfo.SpaceType);

            if (!isAdmin)
            {
                var emailParams = new EmailParameters()
                {
                    Subject       = $"Dev Hub: Confirming Booking!",
                    Firstname     = firstname,
                    Lastname      = lastname,
                    Email         = model.Client.Email,
                    Recipient     = model.Client.Email,
                    Template      = "Add-Booking-Template",
                    Date          = model.UserInfo.DateOfArrival.ToString("MMMM dd, yyyy"),
                    Message       = !string.IsNullOrEmpty(model.UserInfo.Remarks) ? model.UserInfo.Remarks : "No Message",
                    ContactNumber = model.Client.ContactNumber1 + ", " + model.Client.ContactNumber2,
                    IsAdmin       = false,
                    Rate          = rate,
                    RoomType      = model.UserInfo.RoomType,
                    GuestCount    = model.UserInfo.PersonCount,
                    Space         = space
                };

                switch (model.UserInfo.SpaceType)
                {
                case (int)SpaceEnum.ConferenceMeeting:

                    emailParams.Template = "Add-Booking-Conference-Template";
                    return(emailParams);

                default:
                    return(emailParams);
                }
            }
            else
            {
                var emailParams = new EmailParameters()
                {
                    Subject       = $"Dev Hub: New Booking Request!",
                    Firstname     = firstname,
                    Lastname      = lastname,
                    Email         = model.Client.Email,
                    Space         = space,
                    Recipient     = model.Client.Email,
                    Template      = "Add-Admin-Booking-Template",
                    Date          = model.UserInfo.DateOfArrival.ToString("MMMM dd, yyyy"),
                    IsFromDevhub  = true,
                    Message       = !string.IsNullOrEmpty(model.UserInfo.Remarks) ? model.UserInfo.Remarks : "No Message",
                    ContactNumber = model.Client.ContactNumber1 + ", " + model.Client.ContactNumber2,
                    IsAdmin       = true,
                    Rate          = rate,
                    RoomType      = model.UserInfo.RoomType,
                    GuestCount    = model.UserInfo.PersonCount,
                    Link          = _options.Value.Protocol + model.Uri + "/#!/Confirm?token=" + model.UserInfo.RefCode + model.Id
                };

                switch (model.UserInfo.SpaceType)
                {
                case (int)SpaceEnum.ConferenceMeeting:
                    emailParams.Template = "Add-Admin-Booking-Conference-Template";
                    return(emailParams);

                default:
                    return(emailParams);
                }
            }
        }
コード例 #25
0
ファイル: Loggers.cs プロジェクト: briancullinan/epiccentral
        public static bool LogException(decimal userId, Exception[] exs, bool dontSendEmail)
        {
            try
            {
                // add all exceptions to the database
                foreach (Exception ex in exs)
                {
                    WriteDebugInfo(ex.Message);
                    //EcUserEntity user = new EcUserEntity(userId);
                    //EcExceptionLogEntity logEntry = new EcExceptionLogEntity();
                    //logEntry.organizationId = userId;
                    //logEntry.CustomerLocationId =
                    //logEntry.CustomerExceptionLogId =
                    //MemoryStream stream = new MemoryStream();
                    //new XmlSerializer(typeof(Exception)).Serialize(stream, ex);
                    //stream.Position = 0;
                    //logEntry.CustomerExceptionObject = stream.ToArray();
                    //logEntry.CustomerExceptionTitle;
                    //logEntry.CustomerExceptionMessage = ex.Message;
                    //logEntry.CustomerExceptionStackTrace = ex.StackTrace;
                    //if (ex.InnerException != null)
                    //	logEntry.CustomerExceptionInnerStackTrace = ex.InnerException.StackTrace;
                    //else
                    //	logEntry.CustomerExceptionInnerStackTrace = "";
                    //logEntry.CustomerExceptionDateTime = DateTime.Now;
                    //logEntry.CustomerExceptionUser = userId.ToString();
                    //logEntry.CustomerExceptionFormName
                    //logEntry.CustomerExceptionMachineName =
                    //logEntrylogEntry.CustomerExceptionMachineOs =
                    //logEntry.CustomerExceptionApplicationVersion =
                    //logEntry.CustomerExceptionClrversion =
                    //logEntry.CustomerExceptionMemoryUsage =
                    //logEntry.ReceivedDate = DateTime.Now;

                    //logEntry.Save();
                }

                // check whether or not to send the email
                if ((!dontSendEmail) && (ConfigurationManager.AppSettings.Get("EmailExceptions") == "Y"))
                {
                    EmailParameters myEmailParameters = new EmailParameters();
                    myEmailParameters.Receiver          = "*****@*****.**";
                    myEmailParameters.ReceiverFirstName = "Brian";
                    myEmailParameters.ReceiverLastName  = "Cullinan";
                    myEmailParameters.Sender            = GlobalSettings.Emails.DEFAULT_FROM_ADDRESS;
                    myEmailParameters.SubjectLine       = "";
                    foreach (Exception ex in exs)
                    {
                        myEmailParameters.SubjectLine += (myEmailParameters.SubjectLine == "" ? "Exception: " : "; ") + ex.Source;
                        myEmailParameters.BodyContent += "Exception Message: " + ex.Message + Environment.NewLine + Environment.NewLine + ex.StackTrace + Environment.NewLine + Environment.NewLine;
                        int       stop  = 10;
                        Exception inner = ex.InnerException;
                        while (inner != null && stop > 0)
                        {
                            myEmailParameters.BodyContent += "InnerException Message: " + inner.Message + Environment.NewLine + Environment.NewLine + inner.StackTrace + Environment.NewLine + Environment.NewLine;
                            inner = inner.InnerException;
                            stop--;
                        }
                    }
                    myEmailParameters.IsHTMLBody = false;
                    EmailProcessor.SendEmail(myEmailParameters, GlobalSettings.LOCATION_ID, GlobalSettings.SYSTEM_DAEMON_USER_ID);
                }

                return(true);
            }
            catch (Exception tmp_ex)
            {
                //Hosed here if a exception occurs so eat it.
                return(false);
            }
        }
コード例 #26
0
 public static void TriggerMail(EmailParameters parameters)
 {
     Execute(parameters);
 }
コード例 #27
0
ファイル: EmailUtil.cs プロジェクト: joaonc/jdn2common
 /// <summary>
 /// Email to one recipient.
 /// </summary>
 /// <param name="emailParameters"></param>
 /// <param name="to"></param>
 /// <param name="emailContent"></param>
 /// <param name="attachmentFileList"></param>
 public static void Email(EmailParameters emailParameters, string to, EmailContent emailContent, List<string> attachmentFileList)
 {
     Email(emailParameters, to, emailContent.Subject, emailContent.Body, emailContent.IsHtml, attachmentFileList);
 }
コード例 #28
0
        public ActionResult ForgetPassword(string Email)
        {
            IEnumerable <ForgetPasswordViewModel> details = null;

            if (ModelState.IsValid)
            {
                using (var client = new HttpClient())
                {
                    string type = "email";
                    client.BaseAddress = new Uri("http://fsmx-qa.azurewebsites.net/rest/c/customer/duplicate/user/email/");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    var response = client.GetAsync("id" + Email);
                    response.Wait();
                    var result = response.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        using (var client2 = new HttpClient())
                        {
                            client2.BaseAddress = new Uri("http://fsmx-qa.azurewebsites.net//rest/c/customer/profile/");
                            string sampletoken = "03E42414-BE22-48CA-90F0-EEC952081DE8";
                            //var responsetask1 = client2.GetAsync(string.Format("{0}", sampletoken));
                            var responsetask = client.GetAsync(string.Format("{0}", sampletoken));
                            responsetask.Wait();
                            var result1 = responsetask.Result;
                            if (result1.IsSuccessStatusCode)
                            {
                                //var readTask1 = result1.Content.ReadAsAsync<IList<ForgetPasswordViewModel>>();

                                string readtask1 = result1.Content.ReadAsStringAsync().Result;
                                //readtask1.Wait();

                                // details= readtask1.Result;
                            }
                        }



                        string userid    = "demo1";
                        string companyid = "em12723";

                        string datetime = DateTime.UtcNow.ToString();

                        string text      = String.Concat(userid, "%", companyid, "%", datetime);
                        string plaintext = "fgfghehry63646126262677351dgg";
                        string token     = "BLSHDGFGER2433564GDGG4664";
                        var    lnkHref   = Url.Action("ResetPassword", "ForgetPassword", new { text = plaintext, code = token, }, "http");
                        string To        = "*****@*****.**";
                        string subject   = "test1";

                        string body = string.Empty;
                        using (StreamReader reader = new StreamReader(Server.MapPath("~/EmailTemplate.html")))
                        {
                            body = reader.ReadToEnd();
                        }
                        body = body.Replace("{ConfirmationLink}", lnkHref);
                        body = body.Replace("{UserName}", Email);


                        using (var client1 = new HttpClient())
                        {
                            client1.BaseAddress = new Uri("http://fsmx-qa.azurewebsites.net");
                            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                            EmailParameters account = new EmailParameters
                            {
                                To      = To,
                                Subject = subject,
                                Body    = body
                            };
                            try
                            {
                                string json = JsonConvert.SerializeObject(account);
                                Console.WriteLine(json);
                                StringContent content   = new StringContent(json, Encoding.UTF8, "application/json");
                                var           response1 = client.PutAsync("/rest/c/customer/reset/email", content);
                                response1.Wait();
                                var result1 = response1.Result;



                                if (result1.IsSuccessStatusCode)
                                {
                                    ViewBag.Message = "Confirmation Mail Has been Sent to your Registered Mail Id";
                                }
                                else
                                {
                                    return(RedirectToAction("Error"));
                                }
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                }
            }
            return(View("ForgetPassword"));
        }
コード例 #29
0
ファイル: EmailUtil.cs プロジェクト: joaonc/jdn2common
 /// <summary>
 /// Email to one recipient.
 /// </summary>
 /// <param name="emailParameters"></param>
 /// <param name="to"></param>
 /// <param name="subject"></param>
 /// <param name="body"></param>
 /// <param name="isHtml"></param>
 /// <param name="attachmentFileList"></param>
 public static void Email(EmailParameters emailParameters, string to, string subject, string body, bool isHtml, IEnumerable<string> attachmentFileList)
 {
     Email(emailParameters, new string[] { to }, null, null, subject, body, isHtml, null);
 }
コード例 #30
0
 public EmailService(EmailParameters emailParameters)
 {
     _emailParameters = emailParameters;
 }
コード例 #31
0
ファイル: EmailUtil.cs プロジェクト: joaonc/jdn2common
        public static void Email(
            EmailParameters emailParameters,
            IEnumerable<string> toList, IEnumerable<string> ccList, IEnumerable<string> bccList,
            string subject, string body, bool isHtml,
            IEnumerable<string> attachmentFileList)
        {
            // Verification
            IEnumerator<string> enumerator = toList.GetEnumerator();
            if (toList == null || !enumerator.MoveNext() || string.IsNullOrEmpty(enumerator.Current))
            {
                throw new Exception("There must be at least one email address in the To list.");
            }

            foreach (string email in toList)
                if (!IsValidEmail(email))
                    throw new Exception("Invalid email in the To list: " + email);

            if (ccList != null)
            {
                foreach (string email in ccList)
                    if (!IsValidEmail(email))
                        throw new Exception("Invalid email in the Cc list: " + email);
            }

            if (bccList != null)
            {
                foreach (string email in bccList)
                    if (!IsValidEmail(email))
                        throw new Exception("Invalid email in the Bcc list: " + email);
            }

            // Smtp server
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Host = emailParameters.Host;
            if (!emailParameters.UsingDefaultPort)
            {
                smtpClient.Port = emailParameters.Port;
            }
            smtpClient.EnableSsl = emailParameters.UseSSL;
            smtpClient.Credentials = new System.Net.NetworkCredential(emailParameters.User, Util.Decrypt(emailParameters.Password));

            // Emails From, To, Cc, Bcc and attachments
            MailMessage mailMessage = new MailMessage();

            mailMessage.From = new MailAddress(emailParameters.Email, emailParameters.DisplayName);
            foreach (string to in toList)
            {
                mailMessage.To.Add(new MailAddress(to));
            }
            if (ccList != null)
            {
                foreach (string cc in ccList)
                {
                    mailMessage.CC.Add(new MailAddress(cc));
                }
            }
            if (bccList != null)
            {
                foreach (string bcc in bccList)
                {
                    mailMessage.Bcc.Add(new MailAddress(bcc));
                }
            }
            if (attachmentFileList != null)
            {
                foreach (string fileName in attachmentFileList)
                {
                    mailMessage.Attachments.Add(new Attachment(fileName));
                }
            }

            // Email Subject and Body
            mailMessage.Subject = subject;
            mailMessage.IsBodyHtml = isHtml;
            mailMessage.Body = body;

            // Send email
            if (!(Util.IsDebug() && emailParameters.SkipEmailOnDebug))
            {
                smtpClient.Send(mailMessage);
            }
        }