Разрешение клиенту отписаться от рассылки - PullRequest
0 голосов
/ 27 июня 2019

Я ищу способ отписать клиента от моего списка рассылки, используя ajax и c # mvc.

Я пытался использовать функцию $ (document) .ready (function () ...)в моем файле .js, чтобы получить значение строки запроса, скрытое в элементе ввода моего файла Index.cshtml, который будет отображаться первым после того, как пользователь нажмет на кнопку «Отписаться» в своем электронном письме, после чего будет обновлена ​​запись пользователя как отписанная после загрузкиправильно.

Элемент ввода в файле Index.cshtml

<input type="hidden" value='@Request.QueryString["email"]' id="QryEmailAddress" />

Ajax-код в файле .js

$(document).ready(function () {
    var emailAddress = $("#QryEmailAddress").val();

    if (emailAddress != null || emailAddress != "") {
        $.ajax({
            type: "POST",
            url: '/Home/UnsubscribeClientEmail',
            data: { emailAddress: emailAddress },
            beforeSend: function () {
                $('#LoadingBoxModal #showProgress').html();
                $('#LoadingBoxModal .modal-dialog').css('width', '');
                $('#LoadingBoxModal').appendTo('body');
                $('#LoadingBoxModal').modal({
                    backdrop: 'static',
                    keyboard: false,
                    show: true
                });
            },
            success: function (data) {
                $("#LoadingBoxModal").modal('hide');
            },
            error: function (error) {
                $("#LoadingBoxModal").modal('hide');
            },
            completed: function () {
                $("#LoadingBoxModal").modal('hide');
            }
        });
    }
    else {
        //If there's no value, then continue going opening a home page as usual...
    }
});

Это будет в этом коде в моем HomeController.csfile, если переменная emailAddress в приведенном выше коде имеет значение.

public string UnsubscribeClientEmail(string email)
{
   var _updateClientInfo = new HomeTransactions(new PetaConnection().db()).ClientSubscriptions(email);
   return _updateClientInfo;
}

.ClientSubscription (email) в моем домашнем контроллере ссылается на следующий код.

public string ClientSubscriptions(string emailAddress)
{
   var _getClientInfo = _connect.FirstOrDefault<ClientInfo>($"select  * from ClientInfo where EmailAddress = '{emailAddress}'");
   _getClientInfo.EmailSubscription = "No";
   _getClientInfo.DateUpdated = DateTime.Now;
   _connect.Update(_getClientInfo);
   return "OK";
}

Этофункция электронной почты, отправляемая клиенту.

public void SendNotification(string emailAddress, string firstName, string referenceNo)
{
   string adminName = "Company Name";
   string adminAddress = "admin@domain.com";
   string password = "Jibbirish";
   string serverAddress = "aserv.domain.com";
   try
   {
        SmtpMail smtpMail = new SmtpMail("TryIt");
        SmtpClient smtpClient = new SmtpClient();

        smtpMail.From = new MailAddress(adminName, adminAddress);
        smtpMail.To = emailAddress;
        smtpMail.Subject = "Subject";
        smtpMail.Priority = MailPriority.High;
        SmtpServer smtpServer = new SmtpServer(serverAddress);
        smtpServer.User = adminAddress;
        smtpServer.Password = password;

       Attachment attachment = smtpMail.AddAttachment("C:\\images\\Logo_Full.jpg");

       string contentId = "myLogo";
       attachment.ContentID = contentId;
       smtpMail.HtmlBody = "<html><body><a href='.../Home/Index?email=" + emailAddress + "'>Unsubscribe</a></body></html>";
       SmtpClientAsyncResult asyncResult = smtpClient.BeginSendMail(smtpServer, smtpMail, null, null);
       //Waiting to send email...
       while (!asyncResult.IsCompleted)
       {
          asyncResult.AsyncWaitHandle.WaitOne(10, false);
       }
       smtpClient.EndSendMail(asyncResult);
  }
  catch (Exception ex)
  {
      throw;
  }
}

Когда пользователь нажимает на кнопку «отписаться» от своей электронной почты, ему будет отправлено сообщение после того, как он попадет на наш сайт, чтобы сообщить ему о результате..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...