示例#1
0
        public void InviteUser(string email)
        {
            email = (email ?? string.Empty).Trim();

            try
            {
                var addr = new System.Net.Mail.MailAddress(email);
                if (addr.Address != email)
                {
                    throw new InvalidOperationException($"Email address {email} converted to {addr.Address}");
                }
            }
            catch (Exception ex)
            {
                m_log.Error($"InviteUser failed email={email}", ex);
                throw new InvalidOperationException("Neplatná e-mailová adresa");
            }

            using (var tx = m_database.OpenTransaction())
            {
                var thePass = GeneratePass(6);
                m_userRepository.CreateUserAccount(email, thePass);

                m_mailSender.Send(email, "Pozvánka do systému ELSA", $"Uživatel {m_session.User.EMail} Vás pozval do systému ELSA. \r\n Vaše dočasné heslo je: {thePass}\r\n Přihlaste se na {m_session.Project.HomeUrl}\r\nPozor! Vaše dočasné heslo je třeba po přihlášení změnit (kliknutím na link '{email}' v pravém horním rohu), do té doby nebudete moci Elsu používat.");

                tx.Commit();
            }
        }
示例#2
0
        private void SendMessage(MailMessage mailMessage, bool copySender = false)
        {
            try
            {
                var originalFrom = mailMessage.From;
                if (mailMessage.From.Address != ModerationEmail && mailMessage.From.Address != SiteEmail)
                {
                    mailMessage.ReplyToList.Add(originalFrom);
                    var displayName = string.IsNullOrWhiteSpace(originalFrom.DisplayName) ? originalFrom.Address : originalFrom.DisplayName;
                    if (displayName.IndexOf('@') >= 0)
                    {
                        displayName = "'{0}' via {1}".format_with(displayName.Substring(0, displayName.IndexOf('@')),settings.GalleryOwnerName) ;
                    }
                    mailMessage.From = new MailAddress(SiteEmail, displayName);
                }

                mailSender.Send(mailMessage);
                if (copySender)
                {
                    var senderNote = string.Format(
                        "You sent the following message via {0}:{1}{1}", settings.GalleryOwnerName, Environment.NewLine);
                    mailMessage.To.Clear();
                    mailMessage.Body = senderNote + mailMessage.Body;
                    mailMessage.To.Add(originalFrom);
                    mailSender.Send(mailMessage);
                }
            } catch (SmtpException ex)
            {
                // Log but swallow the exception
                ErrorSignal.FromCurrentContext().Raise(ex);
            }
        }
示例#3
0
        public async Task <Trip> Add(Trip item)
        {
            var result = await service.Add(item);

            result = service.Get(result.TripID);
            if (result.OrganizerID.HasValue)
            {
                var org = employee.Get(result.OrganizerID ?? 0);
                foreach (var emp in item.EmployeesToTrip)
                {
                    sender.Send(emp.Employee.Email, emp.Employee.Name, "Trip was created",
                                "A new trip was created where you were listed as a traveler. \r\n" +
                                "\r\n" +
                                "Trip details:\r\n" +
                                "\r\n" +
                                $"{result.DepartureOffice.City} - {result.ArrivalOffice.City}\r\n" +
                                $"{result.DepartureDate} - {result.ReturnDate}\r\n" +
                                $"Organizer: {org.Name} ({org.Email})\r\n" +
                                "\r\n" +
                                "The trip is now visible in your trips list.\r\n" +
                                "Please approve the trip and choose whether you will need an apartment to stay during your trip."
                                );
                }
            }
            return(result);
        }
示例#4
0
        public void SendRecoverPasswordNotification(string email, string recoveredPassword)
        {
            var userRepository = new UserRepository(_context);
            var user           = userRepository.GetByEmail(email);

            var parameterRepository = new ParameterRepository(_context);

            var body = Resource.PasswordRecoveryEmailBody
                       .Replace("{username}", user.Name)
                       .Replace("{login}", email)
                       .Replace("{password}", recoveredPassword)
                       .Replace("{link}", Parameter.BASE_URL);


            var message = new MailMessage();

            message.To.Add(email);
            message.From = new MailAddress(parameterRepository.GetValueByKey(Parameter.EMAIL_FROM_KEY),
                                           Parameter.APP_NAME);
            message.Subject    = Resource.PasswordRecoveryEmailSubject;
            message.IsBodyHtml = true;
            message.Body       = body;

            _sender.Send(message);
        }
示例#5
0
        public void Send_Should_ThrowSmptClientException_When_ClientThrowArgumentException()
        {
            var client = Substitute.For <ISmtpClient>();

            client.When(c => c.Send(Arg.Any <MailMessage>())).Do(info => throw new ArgumentException());

            _clientFactory.Create().Returns(client);

            Expect(() => _mailSender.Send(Arg.Any <MailMessage>()), Throws.TypeOf <SmptClientException>());
        }
示例#6
0
        public ActionResult Index(HomeIndexFormModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }
            try
            {
                //Получаем класс отчета SalesReport
                var salesRep = new SalesReport(_northwindDbContext);

                //Строим отчет SalesReport в поток resultStream
                using (var resultStream = salesRep.BuildToStream(model.StartDate, model.EndDate))
                {
                    resultStream.Position = 0;

                    //отправляем отчет по почте
                    MailMessage mail = new MailMessage()
                    {
                        To          = { model.Email },
                        Subject     = salesRep.Title,
                        Attachments = { new Attachment(resultStream, salesRep.FileName, "text/csv") }
                    };
                    _mailSender.Send(mail);
                }
                return(RedirectToAction("Success"));
            }
            catch (Exception ex) { return(View("Error", ex)); }
        }
示例#7
0
        public TemplateModule(ITemplateBuilder builder, IMailSender sender)
            : base("/templates")
        {
            this.builder = builder;

            Get["/"] = parameters => {
                return View["templates", new {
                    Templates = builder.Templates
                        .OrderBy(t => t.Path)
                }];
            };
            //			Get["/{Name}"] = parameters => {
            //			    return Response.AsJson(new {parameters.Name});
            //			};
            Post["/{Name}/deliver"] = parameters => {
                var model = this.Bind<TemplateModel>();
                sender.Send(GetMailbag((string)parameters.Name, model));
                return HttpStatusCode.OK;
            };
            Post["/{Name}/mailbag"] = parameters => {
                var model = this.Bind<TemplateModel>();
                return Response.AsJson(GetMailbag((string)parameters.Name, model));
            };
            Post["/{Name}/display"] = parameters => {
                var model = this.Bind<TemplateModel>();
                return Template[parameters.Name, model];
            };
        }
示例#8
0
        public async Task <RegisterUserResult> RegisterUser(RegisterUserDTO register)
        {
            if (IsUserExistByEmail(register.Email))
            {
                return(RegisterUserResult.EmailExist);
            }

            var user = new User
            {
                Email           = register.Email.SanitizeText(),
                Address         = register.Address.SanitizeText(),
                FirstName       = register.FirstName.SanitizeText(),
                LastName        = register.LastName.SanitizeText(),
                EmailActiveCode = Guid.NewGuid().ToString(),
                Password        = _passwordHelper.EncodePasswordMd5(register.Password)
            };

            await _userRepository.AddEntity(user);

            await _userRepository.SaveChanges();


            #region Sending Activated Email
            var body = await _renderView.RenderToStringAsync("Email/_ActivateAccount", user);

            _mailSender.Send("*****@*****.**", "تست فعالسازی", body);
            #endregion

            return(RegisterUserResult.Success);
        }
示例#9
0
        public void Send(InternetMailMessage message,
                         InternetMailTextProcessing processText = InternetMailTextProcessing.Process,
                         InternetMailProtocol protocol          = InternetMailProtocol.Smtp)
        {
            if (protocol == InternetMailProtocol.Pop3)
            {
                throw new RuntimeException("Недопустимо указывать POP3 в качестве протокола отправки почты!");
            }

            IMailSender sender = null;

            if (protocol == InternetMailProtocol.Smtp)
            {
                sender = smtpClient;
            }
            else if (protocol == InternetMailProtocol.Imap)
            {
                sender = receiver as ImapReceiver;
                if (sender == null)
                {
                    throw new RuntimeException("Соединение IMAP не установлено!");
                }
            }

            sender?.Send(message, processText);
        }
示例#10
0
        public void Work()
        {
            var data = _messages.GetNext(EmailMessageState.New, _partitionId);

            while (data != null)
            {
                try
                {
                    var message = Get(data);

                    _sender.Send(message);

                    _messages.SetState(data.Id, EmailMessageState.Sent);
                }
                catch (Exception e)
                {
                    if (!e.IsCritical())
                    {
                        _messages.SetState(data.Id, EmailMessageState.Failed);
                    }

                    throw new JobException("Failed to send the message " + data.Id, e);
                }

                data = _messages.GetNext(EmailMessageState.New, _partitionId);
            }
        }
示例#11
0
        private void SendMailMessage(string xmlFilePath, string logFilePath, string clientId)
        {
            var senderConfig = _senderConfigManager.Get();

            try
            {
                _mailSender.Send(senderConfig.Host, senderConfig.Port,
                                 new[] { senderConfig.SenderLogin, senderConfig.SenderPassword },
                                 senderConfig.To, "Converter error", "Client ID : " + clientId,
                                 new[] { xmlFilePath, logFilePath });
            }
            catch (MailSenderConfigurationException ex)
            {
                _log.Info(ex.Message);
                _log.Error(ex.ToString());
            }
            catch (MailAttachmentException ex)
            {
                _log.Info(ex.Message);
                _log.Error(ex.ToString());
            }
            catch (MailSenderException ex)
            {
                _log.Info(ex.Message);
                _log.Error(ex.ToString());
            }
        }
示例#12
0
        public async Task <RegisterUserDto.RegisterUserResult> RegisterUser(RegisterUserDto registerUserDto)
        {
            var isUserExist = _userRepository.IsUserExist(registerUserDto.UserName.Trim().ToLowerInvariant());

            if (isUserExist)
            {
                return(RegisterUserDto.RegisterUserResult.UserExist);
            }
            var user = new User
            {
                Email           = registerUserDto.Email.SanitizeText(),
                FirstName       = registerUserDto.FirstName.SanitizeText(),
                LastName        = registerUserDto.LastName.SanitizeText(),
                EmailActiveCode = Guid.NewGuid().ToString(),
                UserName        = registerUserDto.UserName.SanitizeText(),
                Password        = _passwordHelper.EncodePasswordMd5(registerUserDto.Password)
            };
            await _userRepository.AddEntity(user);

            await _userRepository.SaveChanges();

            var userDto = new RegisterUserDto()
            {
                Email           = user.Email,
                FirstName       = user.FirstName,
                LastName        = user.LastName,
                UserName        = user.UserName,
                EmailActiveCode = user.EmailActiveCode,
                Password        = _passwordHelper.EncodePasswordMd5(registerUserDto.Password)
            };
            var body = await _renderView.RenderToStringAsync("Email/ActivateAccount", userDto);

            _mailSender.Send(userDto.Email.ToLower().Trim(), "سیستم مدیریت فروش ارز-فعالسازی حساب کاربری جدید", body);
            return(RegisterUserDto.RegisterUserResult.Success);
        }
        public async Task <IActionResult> New(Invitation invitation)
        {
            if (!_invitationRepository.VerifyInvitationEmail(invitation.Email))
            {
                ModelState.AddModelError("emailInUse", "El correo especificado ya se encuentra en uso");
            }
            if (!ModelState.IsValid)
            {
                return(View(invitation));
            }

            int creatorId = Convert.ToInt32(User.Claims.Where(c => c.Type == ClaimTypes.NameIdentifier).First().Value);

            _invitationRepository.RegisterNew(invitation, creatorId);
            //Then proceed to send the email
            string url = $"{_configuration["ItinerariesAdminWebApp:invitationUrl"]}?token={HttpUtility.UrlEncode(invitation.Token)}";
            string msg = $"Ha sido invitado a convertirse en un administrador de atracciones turísticas para la app móvil [NombreApp]." +
                         $"Ingrese al siguiente <a href='{url}'>enlace</a> para crear su cuenta de usuario";
            bool success = await _mailSender.Send(invitation.Email, "Invitación para ser Administrador de atracciones turísticas", "", msg);

            if (success)
            {
                _invitationRepository.ChangeStatus(invitation.Id, InvitationStatus.Sent);
                TempData["invitationSent"] = true;
            }
            else
            {
                _invitationRepository.ChangeStatus(invitation.Id, InvitationStatus.Cancelled);

                TempData["invitationSent"] = false;
            }
            return(RedirectToAction(nameof(New)));
        }
        public async Task <MailSummary[]> Handle(SendAllPendingEmailsRequest request, CancellationToken cancellationToken)
        {
            var sentMailList = new List <MailSummary>();
            var mails        = await _context.Mails.ToListAsync(cancellationToken);

            foreach (var mail in mails)
            {
                if (mail.MailStatus == EMailStatus.Pending)
                {
                    try
                    {
                        _mailSender.Send(mail);
                        mail.MailStatus = EMailStatus.Sent;
                        sentMailList.Add(new MailSummary(EMailStatus.Sent, mail.Title));
                    }
                    catch
                    {
                        mail.MailStatus = EMailStatus.Invalid;
                        sentMailList.Add(new MailSummary(EMailStatus.Invalid, mail.Title));
                    }
                }
            }

            await _context.SaveChangesAsync(cancellationToken);

            return(sentMailList.ToArray());
        }
示例#15
0
        public virtual ActionResult Index(string email)
        {
            var id = _users.GetUserIdByEmail(email.Trim());

            if (!id.HasValue)
            {
                ModelState.AddModelError("email", Validation.UserNotFound);

                return(View());
            }

            var key = Guid.NewGuid().ToString();

            SaveKey(id.Value, key);

            var url     = Url.Action(MVC.RestorePassword.NewPassword(id.Value, key), "http");
            var message = new EmailMessage(
                Pages.RestorePassword,
                string.Format(Pages.RestorePasswordText, url),
                EmailsHelper.DefaultFrom,
                email.Trim(),
                id.Value)
            {
                CopyTo     = null,
                Files      = null,
                IsBodyHtml = true
            };

            _sender.Send(message);

            return(RedirectToAction(MVC.RestorePassword.Finish()));
        }
示例#16
0
        public async Task<IActionResult> OnPostSendVerificationEmailAsync()
        {
            if (!ModelState.IsValid)
            {
                return Page();
            }

            var user = await _userManager.FindByEmailAsync(Input.Email);
            if (user == null)
            {
                ModelState.AddModelError(string.Empty, "Verification email sent. Please check your email.");
            }

            var userId = await _userManager.GetUserIdAsync(user);
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
            code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
            var callbackUrl = Url.Page(
                "/Account/ConfirmEmail",
                pageHandler: null,
                values: new { area = "Identity", userId = userId, code = code },
                protocol: Request.Scheme);
            var message = new Message
            {
                Subject = "Confirm your email",
                Body = $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.",
                To = new string[] { Input.Email }
            };
            await _emailSender.Send(message);

            ModelState.AddModelError(string.Empty, "Verification email sent. Please check your email.");
            return Page();
        }
示例#17
0
 public static void SendMail(
     IMailSender mailSender,
     string emailAddress,
     string subject,
     string markdownBody)
 {
     mailSender.Send("*****@*****.**", emailAddress, subject, markdownBody);
 }
示例#18
0
        public void SendEmailFromUI(string toAddress)
        {
            //WITHOUT N INJECT
            //IMailSender mailSender = new MailSenderAction();
            //mailSender.Send(toAddress, "This is without N inject example");

            _mailSender.Send(toAddress, "N inject example");
        }
示例#19
0
        public void ProcessEvent(EventType type, EventData data)
        {
            var messages = _messageBuilder.Get(type, data);

            if (messages != null)
            {
                _sender.Send(messages);
            }
        }
示例#20
0
        /// <summary>
        /// Отправляет отчет по электронной посте с указанием адресов отправителя и получателя
        /// </summary>
        /// <param name="report">Отправляемый отчет</param>
        /// <param name="from">Электронный адрес отправителя</param>
        /// <param name="to">Электронный адрес получателя</param>
        public void Send(Stream report, string from, string to)
        {
            var message = new MailMessage(from, to, messageSubject, messageBody);

            report.Position = 0;
            message.Attachments.Add(new Attachment(report, "Отчет.xlsx"));

            mailSender.Send(message);
        }
示例#21
0
 private void SendMessage(MailMessage mailMessage, bool copySender = false)
 {
     try
     {
         mailSender.Send(mailMessage);
         if (copySender)
         {
             var senderNote = string.Format(
                 "You sent the following message via {0}:{1}{1}", settings.GalleryOwnerName, Environment.NewLine);
             mailMessage.To.Clear();
             mailMessage.Body = senderNote + mailMessage.Body;
             mailMessage.To.Add(mailMessage.From);
             mailSender.Send(mailMessage);
         }
     } catch (SmtpException ex)
     {
         // Log but swallow the exception
         ErrorSignal.FromCurrentContext().Raise(ex);
     }
 }
        public async override Task HandleAsync(RemoveProcessoDomainEvent request)
        {
            var title           = TechnicalEvaluationMessages.EmailTitle;
            var message         = string.Format(TechnicalEvaluationMessages.EmailRemovedMessage, request.Processo.NumeroProcessoUnificado);
            var responsaveisIDs = request.Processo.ProcessoResponsaveis.Select(a => a.ResponsavelID);
            var responsaveis    = await _responsavelRepository.GetResponsaveisByIDsAsync(responsaveisIDs);

            var emails = responsaveis.Select(a => a.Email).ToArray();

            _mailSender.Send(title, message, emails);
        }
示例#23
0
        public void SendEmail(string address, string subject, string body)
        {
            if (string.IsNullOrEmpty(_origin))
            {
                throw new System.Exception($"Imposible to find key '{ MAIL_SENDER_KEY }' in IConfig");
            }

            _sender.Send(_origin, new List <string> {
                address
            }, subject, body);
        }
示例#24
0
 private void SendMessage(MailMessage mailMessage)
 {
     try
     {
         _mailSender.Send(mailMessage);
     }
     catch (SmtpException ex)
     {
         // Log but swallow the exception
         ErrorSignal.FromCurrentContext().Raise(ex);
     }
 }
示例#25
0
        public void Process(AlertOpened @event)
        {
            List <DataOwner> owners = _dataOwnersRepository.Query.ToList();

            var caseItem = _casesRepository.GetById(@event.Cases[0]);

            foreach (var owner in owners)
            {
                string message = $"Dear {owner.Name},\nAlert opened on health risk {caseItem.HealthRiskNumber} with {@event.Cases.Length} case(s). Please follow up using the Reporting module in CBS.";
                _mailSender.Send(owner.Email, $"CBS Alert opened", message);
            }
        }
示例#26
0
        public void SendTest()
        {
            _log.Info("Application is working");

            _mailSender.SenderNotify += (message) => { _log.Info(message); };

            var subject = "test logs message";
            var body = "test logs";
            var attachment = new string[] { "application.log" };

            _mailSender.Send(subject, body, attachment);
        }
示例#27
0
        public void Notify(Notification notification)
        {
            var config = _keyValueStore.Get <MailerConfig>("mailer.config");

            if (config == null)
            {
                _logger.Warn("Mailer not configured.");
                return;
            }

            _mailSender.Send(config, notification);
        }
示例#28
0
        private void TimerOnElapsed(object sender, ElapsedEventArgs e)
        {
            if (DateTime.Now > Scheduler.DateTimeSend)
            {
                _mailSender.Send(Scheduler.Sender.Address, Scheduler.Recipients.Select(r => r.Address), Scheduler.Message.Subject, Scheduler.Message.Text);
                _timer.Stop();
                MissionCompleted?.Invoke(null, null);
#if DEBUG
                Debug.WriteLine($"Отправлено запланированное на {Scheduler.DateTimeSend} письмо.");
#endif
            }
        }
示例#29
0
        public bool SendReminder(wf.Action action, wf.ParameterizedActionDefinition parameter, wf.State current, Identity identity)
        {
            var body = string.Format(@"Hello Arthur!

This is an reminder of an open workflow item in your inbox.

Best regards, your Workflow System");
            var msg  = new MailMessage("*****@*****.**", "*****@*****.**", "Reminder", body);

            _mail.Send(msg);
            return(true);
        }
示例#30
0
文件: Mail.cs 项目: kpocza/thriot
        public void Send(Addressing addressing, string templateName, object model)
        {
            _mailMessage = new MailMessage();

            _addressing   = addressing;
            _templateName = templateName;
            _model        = model;

            PrepareMessage();

            _mailSender.Send(_mailMessage, _mailSettings);
        }
示例#31
0
        public CommandResult Send(MailMessage message, string attachmentPath)
        {
            if (message == null)
            {
                return(new CommandResult(String.Empty, "There is no message to send."));
            }

            var result = new CommandResult();

            _sender.Send(message, attachmentPath);

            return(result);
        }
示例#32
0
        public virtual ActionResult Create(Feedback model)
        {
            ViewBag.FeedbackSubjects = repository.All <FeedbackSubject>();
            if (ModelState.IsValid)
            {
                try
                {
                    model.PublishDate = DateTime.UtcNow;
                    this.repository.Insert(model);
                    this.repository.Save();

                    emailResult result;
                    var         admins = Roles.GetUsersInRole(BaseApplication.AdminRole).Select(x =>
                    {
                        BaseProfile profile;
                        if (BaseApplication.IsSimpleMembershipProviderConfigured())
                        {
                            profile = BaseProfile.CreateProfile(this.repository, x);
                        }
                        else
                        {
                            profile = BaseProfile.CreateProfile(x);
                        }
                        return(profile != null ? profile.Email : string.Empty);
                    }).Where(x => !string.IsNullOrEmpty(x));

                    var subject = this.repository.Find <FeedbackSubject>(model.FeedbackSubjectId).Subject;
                    mailer.Send(string.Join(",", admins), "Feedback submitted",
                                string.Format(@"<h3>A new comment with the category <em>{0}</em> has been posted</h3>
<strong>Submitted by</strong>: {1}<br /><strong>Reply to</strong>: {2}<p>{3}</p>", subject,
                                              model.Name, model.Email, model.Comment), out result);
                }
                catch (Exception ex)
                {
                    return(HttpStatusCode(System.Net.HttpStatusCode.InternalServerError, ex));
                }
                return(Json(new
                {
                    success = true,
                    message = FormMessages.FeedbackPostSuccess,
                    content = this.RenderPartialViewToString("list",
                                                             this.repository.AllIncluding <Feedback>(x => x.FeedbackSubject).OrderByDescending(x => x.PublishDate))
                }));
            }
            else
            {
                return(HttpStatusCode(System.Net.HttpStatusCode.BadRequest, new InvalidOperationException(
                                          string.Join("; ", ModelState.Values.SelectMany(x => x.Errors.Select(e => e.ErrorMessage))))));
            }
        }
示例#33
0
 public static void SendWith(this Mail msg, IMailSender sender)
 {
     sender.Send(msg);
 }
示例#34
0
 public void Send(IMailSender sender)
 {
     this.Status = sender.Send(this);
 }