ارسال ایمیل با Asp.Net Core

ارسال ایمیل با ASP.NET Core:

 

ارسال ایمیل یکی از قابلیت‌های اساسی در بسیاری از برنامه‌های وب است. در این مقاله، به شما نشان خواهیم داد که چگونه می‌توانید با استفاده از ASP.NET Core ایمیل ارسال کنید. ما از کتابخانه MailKit برای این منظور استفاده خواهیم کرد که یکی از محبوب‌ترین و کارآمدترین کتابخانه‌ها برای ارسال ایمیل در Asp.Net Core است.

 

چرا ارسال ایمیل در ASP.NET Core اهمیت دارد؟

 

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

نصب MailKit

dotnet add package MailKit

تنظیمات SMTP

ابتدا تنظیمات SMTP سرور را در فایل appsettings.json خود اضافه کنید. این تنظیمات شامل آدرس سرور، پورت، نام کاربری و رمز عبور حساب ایمیل شما می‌شود.

 

{
 "EmailSettings":
  {   
  "SmtpServer": "smtp.gmail.com",
  "SmtpPort": 587,
  "SmtpUser": "your-email@gmail.com",
  "SmtpPass": "your-app-password",
  "SenderName": "Your Name",
  "SenderEmail": "your-email@gmail.com"
   }
}

 

ایجاد کلاس EmailSettings

یک کلاس برای نگهداری تنظیمات ایمیل ایجاد کنید.

public class EmailSettings
{
    public string SmtpServer { get; set; }
    public int SmtpPort { get; set; }
    public string SmtpUser { get; set; }
    public string SmtpPass { get; set; }
    public string SenderName { get; set; }
    public string SenderEmail { get; set; }
}

 

ایجاد سرویس ایمیل

یک سرویس برای ارسال ایمیل ایجاد کنید که از MailKit استفاده کند.

using MailKit.Net.Smtp;
using MimeKit;

public class EmailService
{
    private readonly EmailSettings _emailSettings;

    public EmailService(IOptions emailSettings)
    {
        _emailSettings = emailSettings.Value;
    }

    public async Task SendEmailAsync(string toEmail, string subject, string htmlMessage)
    {
        var emailMessage = new MimeMessage();
        emailMessage.From.Add(new MailboxAddress(_emailSettings.SenderName, _emailSettings.SenderEmail));
        emailMessage.To.Add(new MailboxAddress("", toEmail));
        emailMessage.Subject = subject;

        var bodyBuilder = new BodyBuilder
        {
            HtmlBody = htmlMessage
        };

        emailMessage.Body = bodyBuilder.ToMessageBody();

        using (var client = new SmtpClient())
        {
            await client.ConnectAsync(_emailSettings.SmtpServer, _emailSettings.SmtpPort, false);
            await client.AuthenticateAsync(_emailSettings.SmtpUser, _emailSettings.SmtpPass);
            await client.SendAsync(emailMessage);
            await client.DisconnectAsync(true);
        }
    }
}

 

اضافه کردن سرویس ایمیل به DI

در Program.cs، تنظیمات ایمیل و سرویس ایمیل را به DI (Dependency Injection) اضافه کنید.

builder.Services.AddTransient<EmailService>();
builder.Services.Configure(configuration.GetSection("EmailSettings"));

 

ارسال ایمیل از کنترلر

در کنترلر، از سرویس ایمیل برای ارسال ایمیل استفاده کنید.

public class HomeController : Controller
{
    private readonly EmailService _emailService;

    public HomeController(EmailService emailService)
    {
        _emailService = emailService;
    }

    public async Task<IActionResult> SendEmail()
    {
        string htmlMessage = "Welcome to our service!We are glad to have you here.";
        await _emailService.SendEmailAsync("recipient@example.com", "Welcome to Our Service", htmlMessage);
        return View();
    }
}

 

نکات مهم

  • شما نیاز دارید که از (App Password) بجای رمز عبور اصلی جیمیلتان استفاده کنید.

رمز عبور برنامه (App Password) یک رمز عبوری است که توسط گوگل ایجاد می‌شود و به شما اجازه می‌دهد تا به برنامه‌ها و دستگاه‌های خاص دسترسی داشته باشید بدون اینکه نیاز به استفاده از رمز عبور اصلی حساب گوگل خود داشته باشید.

مراحل ایجاد رمز عبور برنامه (App Password)

وارد حساب گوگل خود شوید.

به تنظیمات امنیتی بروید.

فعال کردن احراز هویت دو مرحله‌ای: اگر احراز هویت دو مرحله‌ای را فعال نکرده‌اید، ابتدا باید این ویژگی را فعال کنید.

ایجاد رمز عبور برنامه:

  • در بخش "Signing in to Google"، گزینه "App Passwords" را پیدا کنید و روی آن کلیک کنید.
  • اگر این گزینه را پیدا نکردید در goolge سرچ کنید : Signing in to Google > App passwords و وارد صفحه شوید.
  •  
    • در صفحه "App Passwords"، از منوی کشویی، نوع برنامه‌ای که می‌خواهید رمز عبور برای آن ایجاد کنید را انتخاب کنید (مثلاً "Mail").
    • نام دستگاه یا برنامه را وارد کنید و سپس روی "Generate" کلیک کنید.
  • دریافت رمز عبور برنامه:
    • یک رمز عبور 16 کاراکتری نمایش داده می‌شود.
    • این رمز عبور را کپی کنید و در تنظیمات برنامه خود به جای رمز عبور حساب گوگل اصلی استفاده کنید.
    •  
  • استفاده از رمز عبور برنامه در ASP.NET Core

  • بعد از ایجاد رمز عبور برنامه، آن را در فایل appsettings.json یا هرجای دیگری که نیاز به رمز عبور ایمیل دارید، استفاده کنید. به عنوان مثال:
  •  
"SmtpPass": "your-app-password", // ramz ro inja bezarid

و تمام.

 

نوشته شده توسط :

علیرضا مقدم

نظرات کاربران