public ActionResult AddCommentToNotification(int notificationId, string commentText) { var loggedUserEmail = System.Web.HttpContext.Current.Session["loggedUserEmail"].ToString(); _loggedTutor = _tutorRepository.Filter(y => y.User.Email == loggedUserEmail).FirstOrDefault(); var selectedNotification = _notificationRepository.GetById(notificationId); selectedNotification.NotificationComments.Add(new NotificationComment { CommentText = commentText, Commenter = _loggedTutor.User }); _notificationRepository.Update(selectedNotification); var users = selectedNotification.RecipientUsers.ToList(); foreach (var user in users) { if (!user.Email.Equals(loggedUserEmail)) { MailgunEmailService.SendEmailToUser(user, MessageService.ConstruirMensaje(user.Role, selectedNotification.Title)); } } var creatorUser = selectedNotification.NotificationCreator.User; if (!loggedUserEmail.Equals(creatorUser.Email)) { MailgunEmailService.SendEmailToUser(creatorUser, MessageService.ConstruirMensaje(creatorUser.Role, selectedNotification.Title)); } return(RedirectToAction("Index")); }
private static void SendReportEmail(string[] emails, string mailServiceKey, DateTime startDate, Tuple <List <ErrorReportCommand.ReportRow>, bool> jobsReportInfo, Tuple <List <Report>, bool> apReportInfo, Tuple <List <List <string> >, bool> dataLakeReportInfo, bool systemStatus) { var mailgun = new MailgunEmailService(mailServiceKey); var plainText = String.Concat(GetHtmlSummary(startDate, systemStatus) , GetHtmlJobsReport(startDate, jobsReportInfo.Item1) , GetHtmlCheckApReport(apReportInfo.Item1) , GetHtmlCheckDataLakeReport(dataLakeReportInfo.Item1)); foreach (var email in emails) { var emailSending = mailgun.SendHTMLMessage(email, "Health Check on YEAR-AP System", plainText); if (emailSending.IsSuccessful) { Console.WriteLine($"Email sent to {email}"); } else { Console.WriteLine("Failed to send the e-mail"); } } }
public ActionResult SendNewMessage([Bind(Prefix = "Item2")] MessageToTeacherModel model) { if (HttpContext.Session != null) { var loggedUserEmail = System.Web.HttpContext.Current.Session["loggedUserEmail"].ToString(); var loggedTutor = _tutorRepository.Filter(y => y.User.Email == loggedUserEmail).FirstOrDefault(); var teacher = _teacherRepository.Filter(x => x.User.Email == model.To).ToList().FirstOrDefault(); if (teacher == null) { return(RedirectToAction("Index")); } var newNotification = new Notification(model.Subject, model.Message, loggedTutor, teacher, NotificationType.Personal, _academicYearRepository.GetCurrentAcademicYear()) { Approved = true, SendEmail = true }; newNotification.RecipientUsers.Add(teacher.User); _notificationRepository.Create(newNotification); MailgunEmailService.SendEmailToUser(teacher.User, MessageService.ConstruirMensaje(teacher.User.Role)); ViewBag.Message = "Mensaje Enviado!"; } else { ViewBag.Message = "Mensaje No Enviado!"; } return(RedirectToAction("Index", "Notification", new { filter = "Personal" })); }
public ActionResult Add(NotificationRegisterModel eventNotification) { eventNotification.NotificationCreator = _userRepository.GetById(Convert.ToInt64(_sessionManagement.GetUserLoggedId())).UserOwner.Id; eventNotification.AcademicYear = _academicYearRepository.GetCurrentAcademicYear().Id; var notificationIdentity = Mapper.Map <Notification>(eventNotification); var approved = _sessionManagement.GetUserLoggedRole().Equals("Administrador"); notificationIdentity.Approved = approved; notificationIdentity.PeopleDirectedTo = GetDestinationName(notificationIdentity); notificationIdentity = _notificationRepository.Create(notificationIdentity); var users = _userRepository.Filter(x => x.Role.Name == "Administrador"); if (!approved) { foreach (var user in users) { MailgunEmailService.SendEmailToUser(user, MessageService.ApproveMessage()); } } _notificationHandlerService.SendAllPending(); const string title = "Notificación Agregada"; var content = "La notificacion " + notificationIdentity.Title + " ha sido agregada exitosamente."; _viewMessageLogic.SetNewMessage(title, content, ViewMessageType.SuccessMessage); return(RedirectToAction("Index")); }
private void SetupWithMockHttpClientFactory(bool success = true) { var mockHttpClientFactory = new Mock <IHttpClientFactory>(); var clientHandlerStub = new DelegatingHandlerStub(success); var client = new HttpClient(clientHandlerStub); mockHttpClientFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); _mailgunEmailService = new MailgunEmailService(mockHttpClientFactory.Object, new LoggerFactory(), Options.Create(_emailSettings)); }
public static void Handler(SQSEvent sqsEvent, ILambdaContext context) { context.Logger.LogLine($"Received SQSEvent with {sqsEvent.Records.Count} SQSMessage record(s)"); context.Logger.LogLine("Retrieving ApiKey"); string apiKey = String.Empty; using (var ssmClient = new AmazonSimpleSystemsManagementClient()) { var response = ssmClient.GetParameterAsync( new Amazon.SimpleSystemsManagement.Model.GetParameterRequest { Name = Environment.GetEnvironmentVariable("Email__ServiceApiKeyName"), WithDecryption = true } ).GetAwaiter().GetResult(); apiKey = response.Parameter.Value; } context.Logger.LogLine("Creating EmailService object"); var emailService = new MailgunEmailService(new MailgunEmailService.Options { FromAddress = Environment.GetEnvironmentVariable("Email__FromAddress"), MailDomain = Environment.GetEnvironmentVariable("Email__MailDomain"), ServiceUrl = Environment.GetEnvironmentVariable("Email__ServiceUrl"), ServiceApiKey = apiKey }); foreach (var sqsMessage in sqsEvent.Records) { context.Logger.LogLine($"Processing message {sqsMessage.MessageId}"); // Parse out recipient, subject, and email body var strArray = sqsMessage.Body.Split(MessageSeparator, 3, StringSplitOptions.None); var recipient = strArray[0]; context.Logger.LogLine($"({sqsMessage.MessageId}) To: {recipient}"); var subject = strArray[1]; context.Logger.LogLine($"({sqsMessage.MessageId}) Subject: {subject}"); var body = strArray[2]; context.Logger.LogLine($"({sqsMessage.MessageId}) Subject: {body}"); // Send the e-mail var emailMessage = new Email.EmailMessage { EmailAddress = recipient, Subject = subject, Body = body }; var result = emailService.SendEmailAsync(emailMessage).GetAwaiter().GetResult(); context.Logger.LogLine($"({sqsMessage.MessageId}) Email service returned success: {result.Success} details: {result.Details}"); } }
public ActionResult RecoverPassword(LostPasswordModel model) { var user = _userRepository.Filter(x => x.Email.Equals(model.Email)).FirstOrDefault(); if (user == null) { return(RedirectToAction("Index", "Home")); } var password = _passwordGenerationService.GenerateTemporaryPassword(); user.Password = password; user.HashPassword(); user.DefaultPassword = user.Password; user.IsUsingDefaultPassword = true; _userRepository.Update(user); MailgunEmailService.SendEmailToUser(user, MessageService.ChangePasswordMessage(password)); return(RedirectToAction("LogIn", "Account")); }
public ActionResult Create(HomeworkRegisterModel registerModelHomework) { var toCreate = Mapper.Map <Homework>(registerModelHomework); var teacherId = GetTeacherId(); toCreate.AcademicCourse = _academicCourseRepository.Filter(x => x.Teacher != null && x.Teacher.User.Id == teacherId && x.Course.Id == registerModelHomework.Course).FirstOrDefault(); _homeworkRepository.Create(toCreate); const string title = "Tarea agregada"; string content = "La tarea " + toCreate.Title + " ha sido agregado exitosamente."; _viewMessageLogic.SetNewMessage(title, content, ViewMessageType.SuccessMessage); var studentsTutors = _studentRepository.Filter( x => x.MyGrade != null && x.MyGrade.CoursesDetails.Any(y => y.Id == toCreate.AcademicCourse.Id)) .ToList(); foreach (var studentTutor in studentsTutors) { var tutorUser = studentTutor.Tutor1.User; MailgunEmailService.SendEmailToUser(tutorUser, MessageService.NotificarTarea(toCreate.Title)); } return(RedirectToAction("Index")); }
public static void Main(string[] args) { var isTest = true; Console.WriteLine("Are you running this as a test: (Y/N)"); var answer = Console.ReadKey(); isTest = answer.KeyChar == 'y' || answer.KeyChar == 'Y'; Start: var results = new List <Dictionary <MemberList.Member, MemberList.Member> >(); using (var file = File.OpenText("members.json")) using (var reader = new JsonTextReader(file)) { var obj = JToken.ReadFrom(reader); var memberList = obj.ToObject <MemberList>(); Console.WriteLine($"\nNumber of players: {memberList.Members.Count}"); Console.WriteLine("Randomizing...\n"); while (results.Count < memberList.Members.Count) { MemberList.Member giver = null; while (giver == null) { var rand = (new Random(Guid.NewGuid().GetHashCode()).Next(1, memberList.Members.Count + 1)); giver = results.Any(r => r.Keys.Any(k => k.Id == rand)) ? null : memberList.Members.First(m => m.Id == rand); } Console.WriteLine("Randomizing giver: " + giver.Name); MemberList.Member receiver = null; var checkCount = 0; while (receiver == null) { var rand = (new Random(Guid.NewGuid().GetHashCode()).Next(1, memberList.Members.Count + 1)); receiver = giver.Ineligible.Contains(rand) || giver.Id == rand || results.Any(r => r.Values.Any(v => v.Id == rand)) ? null : memberList.Members.First(m => m.Id == rand); checkCount++; if (checkCount > 5) { goto Start; } } if (isTest) { Console.WriteLine($"Giver: {giver.Name} => Receiver: {receiver.Name}\n"); } results.Add(new Dictionary <MemberList.Member, MemberList.Member>() { { giver, receiver } }); } Console.WriteLine("Randomizing complete"); } if (isTest) { foreach (var email in results) { MailgunEmailService.SendEmail(email.First().Key.Name, "*****@*****.**", email.First().Value, true); } Console.WriteLine("Press any key to exit"); Console.ReadKey(); return; } Console.WriteLine("Preparing Emails..."); foreach (var email in results) { MailgunEmailService.SendEmail(email.First().Key.Name, email.First().Key.Email, email.First().Value, false); } Console.WriteLine("\nEmails sent"); Console.WriteLine("Press any key to exit"); Console.ReadLine(); }
public MailgunEmailServiceTests() { _mailgunEmailService = new MailgunEmailService(null, new LoggerFactory(), Options.Create(_emailSettings)); }