"> تنظیم ایمیل سرویس در ASP.NET Core با استفاده از MailKit | ام اس پی سافت

تنظیم ایمیل سرویس در ASP.NET Core با استفاده از MailKit

 MailKit

دراین مقاله چگونگی ارسال ایمیل توسط MailKit در برنامه ASP.NET Core را شرح خواهیم داد . تا پایان این مقاله همراه ما باشید.

برنامه ما باید ایمیلی را با کد یا لینک تأیید به عنوان بخشی از فرآیند ثبت نام و همچنین فرآیند بازیابی رمزعبور ارسال کند.

بنابراین در این مقاله یاد می گیریم که چگونه ارسال ایمیل با استفاده از MailKit را در برنامه های ASP.NET تنظیم کنیم.

ارسال ایمیل در ASP.NET Core در مقایسه با نسخه های قبلی ASP.NET خیلی ساده است.

MailKit چیست؟

MailKit یک کتابخانه متن باز NET mail client. برای ویندوز، مکینتاش، Linux و پلتفرم های موبایل همچون ios واندروید می باشد. که بر اساس MimeKit ساخته شده است.

تمام کتابخانه های ارسال ایمیل همچون SMTP و غیره را از MailKit دریافت می کنیم.

اضافه کردن MailKit در برنامه ASP.NET Core

اضافه کردن MailKit در ASP.NET Core خیلی زیرکانه نیست.

می توانید Project.json یا Nuget Package Manager را ترجیح دهید.

استفاده از Nuget Package Manager را برای نصب و مدیریت وابستگی ها در پروژه  را ترجیح میدهم.

گام۱:

بر روی پروژه ASP.NETCore خود راست کلیک کرده و Manage Nuget Package را انتخاب کنید.

Manage Nuget Package

گام۲:

در سربرگ Browse و در کادر جستجو MailKit را جستجو کرده و همانطور که در تصویر نشان داده میشود نصب نمایید.

Browse

 ASP.NET Core

 MailKit

هنگامی که MailKit نصب شد سرویس ایمیل را نصب می کنیم.

لطفا کدهای زیر را برای فعال نمودن سرویس ایمیل اضافه کنید.

کلاس MessageServices واقع در پوشه Services را باز کنید. کلاس مانند شکل زیر می باشد:

MessageServices

لطفا به کلاس ارسال کننده ایمیل نگاه کنید.

email

قطعه کد:

var mimeMessage = new MimeMessage();  
               mimeMessage.From.Add(new MailboxAddress  
                                       (FromAdressTitle,  
                                        FromAddress  
                                        ));  
               mimeMessage.To.Add(new MailboxAddress  
                                        (ToAdressTitle,  
                                        ToAddress  
                                        ));  
               mimeMessage.Subject = Subject; //Subject  
               mimeMessage.Body = new TextPart("plain")  
               {  
                   Text = BodyContent  
               };  
  
               using (var client = new SmtpClient())  
               {  
                   client.Connect(SmtpServer, SmtpPortNumber, false);  
                   client.Authenticate(  
                       "myname@company.com",  
                       "MYPassword"  
                       );  
                   await client.SendAsync(mimeMessage);  
                   Console.WriteLine("The mail has been sent successfully !!");  
                   Console.ReadLine();  
                   await client.DisconnectAsync(true);  
               }   

بیایید قبل از اینکه نوشتن کدها را شروع کنیم در مورد ویژگی ها و اجزای ایمیل بحث کنیم.

  •  جزئیات فرستنده: فرستنده (ادمین یا جزئیات برنامه)
  •  نام / عنوان:
  • ایمیل
  •  جزئیات دریافت کننده: جزئیات کسی که برنامه ما ایمیل را به او ارسال میکند.
  •  نام / عنوان ایمیل
  • موضوع: موضوع ایمیل
  • بدنه: پیامی که باید ارسال شود (که احتمالا شامل تصاویر، متن و ویدیو باشد)
  • جزئیات میزبان
  •  نام میزبان: نام میزبان (تأمین کننده سرویس ایمیل)
  • پورت: پورت
  • SSL: که میتواند true یا false باشد.

email

جزئیات احراز هویت

  • ایمیل: آدرس ایمیل معتبر
  •  رمز عبور

اکنون بیایید برای ارسال ایمیل کد بنویسیم.

افزودن مرجع Reference

خطوط زیر را برای اضافه کردن مراجع در کلاس MessageServices فراموش نکنید:

  1.  using MailKit.Net.Smtp;
  2.  using MimeKit;
  3.  using MailKit.Security;

 

کد:

کدهای زیر را داخل متد SendEmailAsync بنویسید:

try  
            {  
                //From Address    
                string FromAddress = "myname@company.com";  
                string FromAdressTitle = "My Name";  
                //To Address    
                string ToAddress = email;  
                string ToAdressTitle = "Microsoft ASP.NET Core";  
                string Subject = subject;  
                string BodyContent = message;  
  
                //Smtp Server    
                string SmtpServer = "smtp.office365.com";  
                //Smtp Port Number    
                int SmtpPortNumber = 587;  
  
                var mimeMessage = new MimeMessage();  
                mimeMessage.From.Add(new MailboxAddress  
                                        (FromAdressTitle,   
                                         FromAddress  
                                         ));  
                mimeMessage.To.Add(new MailboxAddress  
                                         (ToAdressTitle,  
                                         ToAddress  
                                         ));  
                mimeMessage.Subject = Subject; //Subject  
                mimeMessage.Body = new TextPart("plain")  
                {  
                    Text = BodyContent  
                };  
  
                using (var client = new SmtpClient())  
                {  
                    client.Connect(SmtpServer, SmtpPortNumber, false);  
                    client.Authenticate(  
                        "myname@company.com",   
                        "MYPassword"  
                        );  
                   await client.SendAsync(mimeMessage);  
                    Console.WriteLine("The mail has been sent successfully !!");  
                    Console.ReadLine();  
                   await client.DisconnectAsync(true);  
                }  
            }  
            catch (Exception ex)  
            {  
                throw ex;  
            }   

جایگزین کردن داده های واقعی با داده های ساختگی (Hostname, Email, Password) را فراموش نکنید.

اکنون ارسال ایمیل از طریق برنامه خود DemoApp را بررسی کنید.

ASP.NET Core احراز هویت داخلی را برای کاربران تأمین میکند (اگر در حین ایجاد پروژه جدید فعال کرده باشید) حالا سعی کنید ایمیل تأیید به کاربران وقتیکه برای اولین بار در برنامه ثبت نام کرده اند، ارسال کنید.

بدین منظور بعضی از کدها را در متد Register کنترل کننده اکانت اصلاح خواهیم کرد.

گام۱:

کنترل کننده اکانت را باز کنید.

گام۲:

به متد Register کنترل کننده اکانت بروید

 MailKit

متد رجیستر مانند تصویر زیر می باشد.

 MailKit

قطعه کد:

// POST: /Account/Register  
        [HttpPost]  
        [AllowAnonymous]  
        [ValidateAntiForgeryToken]  
        public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)  
        {  
            ViewData["ReturnUrl"] = returnUrl;  
            if (ModelState.IsValid)  
            {  
                var user = new ApplicationUser { UserName = model.Email, Email = model.Email };  
                var result = await _userManager.CreateAsync(user, model.Password);  
                if (result.Succeeded)  
                {  
                    // For more information on how to enable account confirmation and password reset please   
                    //visit https://go.microsoft.com/fwlink/?LinkID=532713  
                    // Send an email with this link  
                   // var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);  
                   // var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account",   
                   // new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);  
                   // await _emailSender.SendEmailAsync(model.Email, "Confirm your account",  
                    //   $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");  
                    await _signInManager.SignInAsync(user, isPersistent: false);  
                    _logger.LogInformation(3, "User created a new account with password.");  
                    return RedirectToLocal(returnUrl);  
                }  
                AddErrors(result);  
            }  
  
            // If we got this far, something failed, redisplay form  
            return View(model);  
        }   

لطفا توجه کنید برخی از کدها در متد رجیستر کامنت گذاری شده اند.

این خطوط کد برای موارد زیر مورد استفاده قرار می گیرند:

  •  ایجاد توکن منحصر بفرد بر اساس جزئیات کاربر
  • ایجاد url فراخوانی منحصر بفرد برای تأیید ثبت نام کاربر
  • ارسال ایمیل به کاربر تازه ثبت نام کرده با url فراخوانی

اکنون کد را مانند زیر کامنت برداری کنید:

آموزش ASP.NET Core

قطعه کد:

// POST: /Account/Register  
       [HttpPost]  
       [AllowAnonymous]  
       [ValidateAntiForgeryToken]  
       public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)  
       {  
           ViewData["ReturnUrl"] = returnUrl;  
           if (ModelState.IsValid)  
           {  
               var user = new ApplicationUser { UserName = model.Email, Email = model.Email };  
               var result = await _userManager.CreateAsync(user, model.Password);  
               if (result.Succeeded)  
               {  
                   // For more information on how to enable account confirmation and password reset please   
                   //visit https://go.microsoft.com/fwlink/?LinkID=532713  
                   // Send an email with this link  
                   var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);  
                   var callbackUrl = Url.Action(nameof(ConfirmEmail), "Account",   
                   new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);  
                   await _emailSender.SendEmailAsync(model.Email, "Confirm your account",  
                      $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");  
  
                   TempData["Message"] = "Confirmation Email has been send to your email. Please check email.";  
                   TempData["MessageValue"] = "1";  
  
                   //SignInManager to sign in user.   
                   await _signInManager.SignInAsync(user, isPersistent: false);   
  
                   _logger.LogInformation(3, "User created a new account with password.");  
                   return RedirectToLocal(returnUrl);  
               }  
               AddErrors(result);  
           }  
  
           // If we got this far, something failed, redisplay form  
           return View(model);  
       }   

بدین طریق کد ارسال ایمیل را اضافه کرده و ارسال ایمیل را در فرآیند ثبت نام فعال سازی کردیم.

اجرای برنامه:

گام۱:

برنامه را Rebuild کرده و اجرا کنید.

گام۲:

به صفحه رجیستر بروید ( از طریق NavBar کاربر یا مستقیما در url، Account/Register/ را بزنید)

 MailKit

بعد از ثبت نام کردن یک ایمیل تأیید به ایمیل شما فرستاده میشود.

لطفا صندوق ورودی و پوشه اسپم خود را کنترل نمایید. ایمیلی مانند زیر دریافت خواهید کرد.

ارسال ایمیل در ASP.NET Core

ما ارسال ایمیل در ASP.NET Core را با استفاده MailKit بطور موفقیت آمیز ادغام کردیم.

همچنین در مورد چگونگی محدود کردن کاربران غیر مجاز به برنامه و فعال کردن فراموشی رمز عبور Forget Password و بازیابی رمز عبور Reset Password دربرنامه بحث خواهیم کرد.

خلاصه:

  •  یاد گرفتیم چطور MailKit را در برنامه های ASP.NET Core نصب کنیم.
  • چطور MassegeSrevices را در ASP.NET Core تنظیم کنید
  •  ایمیل آزمایشی از طریق برنامه ASP.NET Core ارسال کنیم.
  • پسورد: www.mspsoft.com
زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

کدیشن ! مارکت پروژه های برنامه نویسی راه اندازی شدیه توکه پا بریم ببینم