отправка электронного письма со ссылкой для подтверждения, когда пользователь подписан на сайт

#c# #asp.net #sql-server

#c# #asp.net #sql-сервер

Вопрос:

Я новичок в .NET-программировании, так что помогите мне, ребята.
Мой вопрос: Когда пользователь подписывается на сайт, значения будут добавлены в базу данных Sql, в настоящее время в табличных данных, сохраненных, он получит сообщение о статусе «ДА» при подписке. Но здесь возникает вопрос — когда они подписываются на сайт, электронное письмо должно отправляться на адрес электронной почты подписчика со ссылкой для подтверждения. Когда пользователь нажимает на эту ссылку для подтверждения, он должен напрямую перейти на адрес веб-сайта. Затем одновременно в базе данных SQL сообщение о статусе должно измениться на статус «ДА», который уже был сохранен как «НЕТ».
Пожалуйста, предложите мне какой-нибудь сайт / ссылку, на котором есть полный код этой проблемы или что-нибудь, что поможет мне найти решение.

Комментарии:

1. чего именно вы хотите? можете ли вы быть немного более конкретным и стараться быть немного более грамотным, когда вы задаете вопрос?

2. привет, когда пользователь подписывается на сайт, ссылка для подтверждения электронной почты должна соответствовать его идентификатору электронной почты, и при нажатии на его ссылку она должна напрямую переходить на страницу входа на сайт.

Ответ №1:

Это обычная задача в каждом серверном проекте, использующем регистрацию пользователя.

  1. Когда пользователь регистрируется на вашем сайте, создайте для него уникальный ключ подтверждения в базе данных. Это может быть алгоритм, подобный md5, защищенный от URL-адресов. Вы можете использовать его уникальное имя пользователя или адрес электронной почты для генерации ключа подтверждения.
  2. Отправьте по электронной почте ссылку для подтверждения, включая имя и ключ подтверждения в параметрах.
  3. На странице подтверждения проверьте в базе данных, правильно ли указан ключ подтверждения для имени пользователя.
  4. Обновите пользователя в базе данных до подтвержденного.

Комментарии:

1. Есть оптимальные способы сделать это, но этот — один из самых простых

Ответ №2:

Ваш вопрос довольно широкий, возможно, вам стоит взглянуть на asp.net система членства, подробное описание можно найти здесь — http://msdn.microsoft.com/en-us/library/879kf95c.aspx

Что касается сценария с электронной почтой для членства, он рассматривается как часть более широкой серии статей о системе членства на сайте «4 Guys From Rolla» — https://web.archive.org/web/20211020153319/https://www.4guysfromrolla.com/articles/062508-1.aspx

Ответ №3:

Вам нужно сконструировать ссылку для подтверждения таким образом, чтобы какой-нибудь злоумышленник не смог ее предугадать и решил позвонить на ваш сайт, чтобы незаконно подписаться или отказаться от подписки на ваших пользователей.

Например, где-то в вашем теле вы можете иметь:

 <a href="http://yoursite.com/unsubscribe.aspx?id=userIdamp;token={some-guid-value-stored-in-your-db} > Click here to unsubscribe </a>
  

Вы могли бы отправить электронное письмо следующим образом:

 private void SendEmail()
{
  string to = "jane@contoso.com";
  string from = "ben@contoso.com";
  MailMessage message = new MailMessage(from, to);
  message.Subject = "Using the new SMTP client.";
  message.Body = @"<a href="http://yoursite.com/unsubscribe.aspx?id=userIdamp;token={some-guid-value-stored-in-your-db} > Click here to unsubscribe </a>";
  message.IsBodyHtml=true; //VERY IMPORTANT
 SmtpClient client = new SmtpClient(server);
 // Credentials are necessary if the server requires the client 
 // to authenticate before it will send e-mail on the client's behalf.
 client.UseDefaultCredentials = true;

  try {
    client.Send(message);
  }  
  catch (Exception ex) {
    Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", 
   ex.ToString() );           
  }
}
  

На unsubscribe.aspx вы бы прочитали оба значения userid и guid следующим образом:

 Page_Load
{
    string userid = Request.QueryString["id"];
    string guid = Request.QueryString["token"];

    //Query your database, find user matching this id and token chaning YES for NO to
    //unsbscribe
}
  

Ответ №4:

Посмотрите это видео о реализации шаблона подтверждения регистрации, чтобы вы могли использовать аналогичный подход для выполнения своей задачи