public void TestUnsubscribe() { const string email = "*****@*****.**"; var token = SubscriberService.CalculateToken(email); Assert.IsTrue(SubscriberService.VerifyToken(email, token)); }
public ActionResult Send(string text, string subject) { var messages = new List <MailMessage>(); DetachedCriteria subscriberCriteria = DetachedCriteria.For <Subscriber>(); subscriberCriteria.Add(Restrictions.Eq("IsActive", true)); var subscribers = daoTemplate.FindByCriteria <Subscriber>(subscriberCriteria); foreach (Subscriber subscriber in subscribers) { MailMessage message = new MailMessage(new MailAddress(Settings.Instance.MailFromAddress, Settings.Instance.MailFromDisplayName), new MailAddress(subscriber.Email)); message.Subject = subject; message.Body = text; message.IsBodyHtml = true; message.BodyEncoding = Encoding.UTF8; message.Body += "<br/>" + string.Format("Чтобы отписаться от рассылки перейдите по ссылке: http://{2}/Unsubscribe/{0}/{1}", subscriber.Email, SubscriberService.CalculateToken(subscriber.Email), Request.ServerVariables["HTTP_HOST"]); messages.Add(message); } DetachedCriteria userCriteria = DetachedCriteria.For <User>(); userCriteria.Add(Restrictions.Eq(Models.User.IsSignedForNewsProperty, true)); var users = daoTemplate.FindByCriteria <User>(userCriteria); foreach (User user in users) { MailMessage message = new MailMessage(new MailAddress(Settings.Instance.MailFromAddress, Settings.Instance.MailFromDisplayName), new MailAddress(user.Email, user.Contact.FullName)); message.Subject = subject; message.Body = text; message.IsBodyHtml = true; message.BodyEncoding = Encoding.UTF8; message.Body += "<br/>" + string.Format("Чтобы отписаться от рассылки перейдите по ссылке: http://{2}/UnsubscribeUser/{0}/{1}", user.Email, SubscriberService.CalculateToken(user.Email), Request.ServerVariables["HTTP_HOST"]); messages.Add(message); } SmtpClient client = new SmtpClient(Settings.Instance.MailSmtpServer, Settings.Instance.MailSmtpPort) { Credentials = new NetworkCredential() { UserName = Settings.Instance.MailUserName, Password = Settings.Instance.MailUserPassword } }; foreach (MailMessage message in messages) { client.Send(message); } return(View()); }