public async Task <ActionResult> Invitation(string Email) { try { var email = new MailAddress(Email).ToString(); foreach (var invite in db.Invitations.Where(i => i.EmailTo.ToLower() == email.ToLower())) { if (invite.Accepted) { TempData["status"] = "accepted"; return(RedirectToAction("Index", "Households", null)); } if (invite.Expires >= DateTime.Now) { TempData["status"] = "pending"; return(RedirectToAction("Index", "Households", null)); } } Invitation invitation = new Invitation { Created = DateTime.Now, Expires = DateTime.Now.AddDays(3), EmailTo = email, Subject = $"{User.Identity.FullName()} has invited you to join Budget Destoyer", Body = $"{User.Identity.FullName()} has invited you to join their house {HouseholdHelper.GetHouseholdName(User.Identity.GetUserId())} on Budget Destroyer", HouseholdId = Convert.ToInt32(HouseholdHelper.GetUserHouseholdId(User.Identity.GetUserId())), UniqueCode = Guid.NewGuid(), Accepted = false }; db.Invitations.Add(invitation); db.SaveChanges(); string code = invitation.UniqueCode.ToString(); var callbackUrl = Url.Action("RegisterInvitation", "Account", new { code = code }, protocol: Request.Url.Scheme); //var message = "<p>Email From: <bold>{0}</bold>({1})</p><p> Message:</p><p>{2}</p> "; var bodyButton = "<a href =\"" + callbackUrl + "\">here</a>"; var sentEmail = new MailMessage("*****@*****.**", email) { Subject = invitation.Subject, Body = $"{invitation.Body}. Please Join by clicking {bodyButton}", IsBodyHtml = true }; var svc = new PersonalEmail(); await svc.SendAsync(sentEmail); TempData["status"] = "success"; return(RedirectToAction("Index", "Households", null)); } catch (FormatException ex) { TempData["status"] = "error"; return(RedirectToAction("Index", "Households", null)); } }