برنامه نویسی

ارسال ایمیل با Gmail با استفاده از MailKit در .NET Web API: راهنمای کامل

مقدمه:

ارسال ایمیل به صورت برنامه ای یک نیاز متداول برای بسیاری از برنامه های وب است. در این پست وبلاگ ، ما شما را از طریق نحوه ارسال ایمیل با استفاده از سرور SMTP Gmail در یک برنامه کاربردی API .NET Core Web استفاده خواهیم کرد پست، یک کتابخانه ایمیل مدرن و سبک برای .NET.

در پایان این راهنما ، شما می آموزید که چگونه یک API وب را تنظیم کنید ، MailKit را برای ارسال ایمیل ادغام کنید و از تنظیمات پیکربندی ذخیره شده در آن استفاده کنید appsettings.jsonبشر


پیش نیازها:

قبل از شروع ، اطمینان حاصل کنید که موارد زیر را دارید:

  • .NET 6 یا بالاتر نصب شده است.
  • یک حساب Gmail با تأیید 2 مرحله ای فعال و رمز ورود تولید شده (از آنجا که Gmail برنامه های امنیتی کمتری را مسدود می کند).
  • دانش اساسی در ایجاد پروژه های API وب در .NET.

مرحله 1: پروژه API دات نت خود را تنظیم کنید

  1. Visual Studio (یا IDE مورد نظر خود را باز کنید) و ایجاد کنید پروژه جدید API وببشر

  2. نصب کردن پست از طریق nuget:

   dotnet add package MailKit
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

MailKit یک کتابخانه مشتری کاملاً برجسته است که به شما امکان می دهد با استفاده از SMTP ، POP3 و IMAP ایمیل ارسال و دریافت کنید.


مرحله 2: پیکربندی ایمیل را در آن اضافه کنید appsettings.json

در پروژه خود ، باز را باز کنید appsettings.json پرونده را برای تنظیمات ایمیل خود اضافه کنید ، مانند این:

{
  "EmailSettings": {
    "Username": "your-mail@gmail.com",
    "Password": "gmail-generated-app-password",
    "SmtpServer": "smtp.gmail.com",
    "Port": 587
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • نام کاربری: آدرس ایمیل Gmail شما.
  • رمز: رمز ورود در حساب Gmail خود تولید شده است. (می توانید آن را از حساب Google خود تحت امنیت> رمزهای عبور برنامه ایجاد کنید).
  • Smtpserver: سرور SMTP برای Gmail (smtp.gmail.com).
  • بندر: درگاه SMTP Gmail ، که است 587 برای رمزگذاری TLS.

مرحله 3: سرویس ایمیل را ایجاد کنید

ما یک کلاس خدماتی به نام ایجاد خواهیم کرد EmailService این ارسال ایمیل را انجام می دهد.

1. رابط کاربری ایجاد کنید برای سرویس:

در IRepository پوشه (یا هر کجا که ترجیح می دهید) ، یک فایل جدید به نام ایجاد کنید IEmailService.cs:

   namespace EmailApp.IRepository
   {
       public interface IEmailService
       {
           Task<string> SendEmail(string toEmail, string subject, string body);
       }
   }
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. سرویس ایمیل را ایجاد کنید کلاس که پیاده سازی می کند IEmailService رابط

در Repository پوشه ، یک فایل جدید به نام ایجاد کنید EmailService.cs:

   using EmailApp.IRepository;
   using MailKit.Net.Smtp;
   using MailKit.Security;
   using Microsoft.Extensions.Configuration;
   using MimeKit;

   namespace EmailApp.Repository
   {
       public class EmailService : IEmailService
       {
           private readonly IConfiguration _configuration;

           public EmailService(IConfiguration configuration)
           {
               _configuration = configuration;
           }

           public async Task<string> SendEmail(string toEmail, string mailSubject, string mailBody)
           {
               try
               {
                   var smtpServer = _configuration["EmailSettings:SmtpServer"];
                   var port = int.Parse(_configuration["EmailSettings:Port"]);
                   var fromMail = _configuration["EmailSettings:Username"];
                   var password = _configuration["EmailSettings:Password"];

                   var email = new MimeMessage();
                   email.From.Add(new MailboxAddress("Your Name", fromMail));
                   email.To.Add(new MailboxAddress("To Name", toEmail));
                   email.Subject = mailSubject;
                   email.Body = new TextPart("html") { Text = mailBody };

                   using var smtp = new SmtpClient();
                   await smtp.ConnectAsync(smtpServer, port, SecureSocketOptions.StartTls);
                   await smtp.AuthenticateAsync(fromMail, password);
                   await smtp.SendAsync(email);
                   await smtp.DisconnectAsync(true);

                   return "Email sent successfully!";
               }
               catch (Exception ex)
               {
                   // Log the exception (not done here for simplicity)
                   return $"Email sending failed. Error: {ex.Message}";
               }
           }
       }
   }
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

توضیح مختصر در مورد کد:

1. مقادیر پیکربندی واکشی

   var smtpServer = _configuration["EmailSettings:SmtpServer"];
   var port = int.Parse(_configuration["EmailSettings:Port"]);
   var fromMail = _configuration["EmailSettings:Username"];
   var password = _configuration["EmailSettings:Password"];
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • بازیابی جزئیات سرور SMTP (آدرس سرور ، پورت ، نام کاربری و رمز عبور) از appsettings.jsonبشر

2 ایجاد پیام ایمیل

   var email = new MimeMessage();
   email.From.Add(new MailboxAddress("Your Name", fromMail));
   email.To.Add(new MailboxAddress("To Name", toEmail));
   email.Subject = mailSubject;
   email.Body = new TextPart("html") { Text = mailBody };
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • تقلید برای ایجاد ایمیل استفاده می شود.
  • از و به آدرس ها: فرستنده را تنظیم می کند (fromMail) و گیرنده (toEmail).
  • موضوع و بدن: موضوع و بدن را با فرمت HTML تنظیم می کند.

3 ارسال ایمیل

   using var smtp = new SmtpClient();
   await smtp.ConnectAsync(smtpServer, port, SecureSocketOptions.StartTls);
   await smtp.AuthenticateAsync(fromMail, password);
   await smtp.SendAsync(email);
   await smtp.DisconnectAsync(true);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  • مشتری SMTP ایجاد می کند (SmtpClient).
  • به سرور SMTP متصل می شود با استفاده از آدرس سرور و درگاه داده شده.
  • احراز هویت را فعال می کند با اعتبار Gmail.
  • ایمیل را ارسال می کندبشر
  • پاکسازی را قطع می کند بعد از ارسال

مرحله 4: سرویس را ثبت کنید Program.cs

اکنون ، ثبت نام کنید EmailService در Program.cs به گونه ای که می توان آن را به کنترلر تزریق کرد.

در شما Program.cs (یا Startup.cs برای نسخه های قدیمی تر) موارد زیر را اضافه کنید:

builder.Services.AddScoped<IEmailService, EmailService>();
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این ثبت می کند EmailService برای تزریق وابستگی در کنترل کننده های خود در دسترس باشید.


مرحله 5: کنترلر ایمیل را ایجاد کنید

در مرحله بعد ، بیایید یک کنترلر API ایجاد کنیم که درخواست های HTTP برای ارسال ایمیل را کنترل کند.

در Controllers پوشه ، یک فایل جدید به نام ایجاد کنید EmailController.cs:

using EmailApp.IRepository;
using Microsoft.AspNetCore.Mvc;

namespace EmailApp.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class EmailController : ControllerBase
    {
        private readonly IEmailService _emailService;

        public EmailController(IEmailService emailService)
        {
            _emailService = emailService;
        }

        [HttpPost]
        [Route("SendEmail")]
        public async Task<IActionResult> SendEmail(string toEmail, string mailSubject, string mailBody)
        {
            var result = await _emailService.SendEmail(toEmail, mailSubject, mailBody);
            return Ok(new { message = result });
        }
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این کنترلر یک نقطه پایانی پست را در معرض نمایش قرار می دهد api/Email/SendEmail که پارامترهایی مانند آن را می پذیرد toEmailبا mailSubjectوت mailBody، و با استفاده از ایمیل ، ایمیل را ارسال کنید EmailServiceبشر


مرحله ششم: API را آزمایش کنید

اکنون می توانید API را با ارسال درخواست پست با استفاده از Postman یا Swagger (در صورت پیکربندی) آزمایش کنید.

درخواست مثال:

  • نقطه پایانی: POST api/Email/SendEmail
  • بدنه (JSON):
  {
    "toEmail": "recipient-email@gmail.com",
    "mailSubject": "Test Email",
    "mailBody": "This is a test email sent from the .NET Web API using MailKit."
  }
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر همه چیز به درستی تنظیم شده است ، باید پاسخی مانند:

{
  "message": "Email sent successfully!"
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


نتیجه گیری:

در این وبلاگ ، شما یاد گرفتید که چگونه ایمیل را با استفاده از سرور SMTP Gmail در یک برنامه API .NET WEB با برنامه ارسال کنید پست کتابخانه شما همچنین دیدید که چگونه راه حل را با الگوی مخزن، و نحوه مدیریت تنظیمات پیکربندی ایمیل به طور ایمن در appsettings.jsonبشر

با دنبال کردن این مراحل ، می توانید به راحتی عملکرد ایمیل را در برنامه های کاربردی .NET Core خود ادغام کرده و ایمیل را از طریق Gmail (یا هر سرویس SMTP دیگر) به صورت برنامه ای ارسال کنید.


مراحل بعدی:

  • سرویس ایمیل را با قابلیت های اضافی مانند پیوست ها یا قالب بندی محتوای HTML تقویت کنید.
  • ساخت رابط برای ایجاد ایمیل از یک برنامه جلوی.

برنامه نویسی مبارک!
مرا در LinkedIn پیدا کنید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا