Я ищу способ отписать клиента от моего списка рассылки, используя 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;
}
}
Когда пользователь нажимает на кнопку «отписаться» от своей электронной почты, ему будет отправлено сообщение после того, как он попадет на наш сайт, чтобы сообщить ему о результате..