دسته بندی ها
21:55 1398/08/12

فعالسازی اکانت با استفاده از ایمیل در Asp.net Core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4951
هوش مصنوعی

پاسخ هوش مصنوعی

برای پیاده سازی فرآیند فعالسازی اکانت با استفاده از ایمیل در ASP.NET Core، شما نیاز به دو قسمت اصلی دارید: ارسال ایمیل و فعالسازی حساب کاربری. در زیر یک نمونه ساده از این فرآیند ارایه می دهیم.

ابتدا باید کتابخانه MailKit را برای ارسال ایمیل اضافه کنید. می توانید آن را از طریق NuGet Package Manager نصب کنید:

Install-Package MailKit

سپس یک سرویس برای ارسال ایمیل ایجاد کنید:

public interface IEmailSender
{
    Task SendEmailAsync(string email, string subject, string message);
}

public class EmailSender : IEmailSender
{
    public Task SendEmailAsync(string email, string subject, string message)
    {
        var emailMessage = new MimeMessage();
        emailMessage.From.Add(new MailboxAddress("Your App Name", "your-email@example.com"));
        emailMessage.To.Add(new MailboxAddress("", email));
        emailMessage.Subject = subject;
        emailMessage.Body = new TextPart("html")
        {
            Text = message
        };

        using (var client = new SmtpClient())
        {
            client.Connect("smtp.example.com", 587, false);
            client.Authenticate("your-email@example.com", "your-email-password");
            client.Send(emailMessage);
            client.Disconnect(true);
        }

        return Task.CompletedTask;
    }
}

سپس هنگام ثبت نام کاربر می توانید ایمیل فعالسازی را ارسال کنید:

public async Task Register(RegisterViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
        var result = await _userManager.CreateAsync(user, model.Password);
        if (result.Succeeded)
        {
            var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
            var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Scheme);
            await _emailSender.SendEmailAsync(model.Email, "فعال سازی اکانت", $"برای فعال سازی حساب خود اینجا کلیک کنید.");
        }
    }
}

سپس باید اکشنی برای تأیید ایمیل ایجاد کنید:

public async Task ConfirmEmail(string userId, string code)
{
    var user = await _userManager.FindByIdAsync(userId);
    if (user == null)
    {
        return RedirectToAction("Index", "Home");
    }
    var result = await _userManager.ConfirmEmailAsync(user, code);
    return View(result.Succeeded ? "ConfirmEmail" : "Error");
}

این نمونه یک پروسه ساده برای فعالسازی اکانت از طریق ایمیل در ASP.NET Core است. شما می توانید بر اساس نیازهای خود آن را گسترش دهید و سفارشی سازی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 22:14 1398/08/13

فعالسازی اکانت با استفاده از ایمیل در Asp.net Core

برای ارسال ایمیل فعالسازی به محض ثبت نام کاربر در سایت باید یک ایمیل به کاربر ارسال کنید. در این ایمیل باید یک Token که مخصوص همین کاربر ایجاد می شود را تولید کنید. در ادامه کدهای مربوط به این کار رو قرار میدم و به توضیح کدها برای شما می پردازم.

 

if (registerResult.Succeeded)
{
   //Send Activation Email
   var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
   var callbackUrl = Url.Action("ConfirmEmail", "Home", values: new { userId = user.Id, code = code }, protocol: Request.Scheme);
   await _emailSender.SendEmailAsync(model.registerVM.Email, "ایمیل فعالسازی", $" <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>لینک فعالسازی</a>");
   return RedirectToAction("SendToEmailMessage", "Home");
}

 

در قطعه کد بالا به ترتیب کارهای زیر انجام می شود

  • در متغیر code توسط دستورات آیدنتیتی یک Token مخصوص کاربر ایجاد می کنیم.
  • در متغیر CallBackUrl آدرس برگشت کاربر به سایت را پس از کلیک کردن روی لینک فعالسازی مشخص می کنیم. همچنین در این خط توکن تولید شده را هم نگهداری می کنیم و Id کاربر تا وقتی کاربر پس از کلیک کردن روی لینک به سایت برگشت مطمئن شویم کاربر همان کاربر است.
  • در خط سوم هم ایمیل را ارسال می کنیم. (برای ارسال ایمیل می تونید به این لینک مراجعه کنید.)
  • در خط آخر هم کاربر را پس از ثبت نام به مسیر دلخواه هدایت می کنیم.

شما به این صورت می تونید فعالسازی اکانت با استفاده از ایمیل در Asp.net Core را انجام بدید.

ویرایش شده در پنج شنبه 24 شهریور 1401 ساعت 18:54:31
به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود