دسترسی به جی‌میل از طریق IMAP با OAuth2 در C#

این مقاله بر روی کار با جی‌میل، یک سرویس ایمیل پرکاربرد، با استفاده از کلاینت IMAP به عنوان بخشی از کتابخانه .NET متمرکز است. این مقاله گام‌های ضروری برای احراز هویت کاربران از طریق OAuth 2.0 را پوشش می‌دهد که به دسترسی ایمن به حساب‌های جی‌میل به کاربران امکان می‌دهد. همچنین توضیح می‌دهد که چگونه اعتبارنامه‌های لازم را از Google Cloud Console به دست آورید، توکن‌های دسترسی را بازیابی کرده و با استفاده از C# و API .NET به جی‌میل متصل شوید. در پایان این راهنما، شما مهارت‌هایی برای مدیریت پیام‌های ایمیل به صورت برنامه‌نویسی خواهید داشت که به برنامه‌ها اجازه می‌دهد با جی‌میل تعامل داشته باشند. این تکنیک‌ها برای ساخت یک کلاینت ایمیل یا اتوماسیون وظایف، تلاش‌های توسعه را بهبود می‌بخشند.

کتابخانه .NET برای دسترسی به جی‌میل از طریق IMAP

Aspose.Email for .NET فرآیند دسترسی به جی‌میل از طریق IMAP با احراز هویت OAuth 2.0 را با ارائه کلاس‌ها و متدهای قدرتمند و آماده استفاده برای تعامل با سرورهای IMAP جی‌میل ساده می‌کند. این کتابخانه برای مدیریت دامنه وسیعی از وظایف مربوط به ایمیل در برنامه‌های .NET طراحی شده است. این کتابخانه از پروتکل‌های ایمیلی محبوب از جمله IMAP، POP3 و SMTP پشتیبانی می‌کند و آن را به ابزاری ضروری برای توسعه‌دهندگانی که بر روی قابلیت‌های ایمیل کار می‌کنند تبدیل می‌کند.

با Aspose.Email می‌توانید به‌طور ایمن به حساب‌های جی‌میل متصل شوید، پیام‌ها را بازیابی کرده و داده‌های صندوق پستی را مدیریت کنید، بدون اینکه نگران پیچیدگی‌های پیاده‌سازی پروتکل باشید. این کتابخانه بسیاری از جزئیات سطح پایین را انتزاع می‌کند و به توسعه‌دهندگان اجازه می‌دهد تا بر روی نوشتن کد تمیز و عملکردی برای مدیریت ایمیل متمرکز شوند، چه برای کلاینت‌های ایمیل، اتوماسیون یا خدمات بک‌اند.

برای استفاده از قدرت این کتابخانه، فقط کافی است آن را با استفاده از NuGet Package Manager نصب کرده و به پروژه خود ادغام کنید:

  • پروژه خود را در Visual Studio باز کنید.
  • به Tools > NuGet Package Manager > Manage NuGet Packages for Solution بروید.
  • جستجو کنید برای Aspose.Email.
  • بسته را انتخاب کرده و روی Install کلیک کنید.

همچنین می‌توانید از Package Manager Console استفاده کرده و دستور زیر را تایپ کنید:

Install-Package Aspose.Email

شما همچنین می‌توانید آخرین نسخه API را مستقیماً از وب‌سایت Aspose دانلود کنید.

پس از نصب کتابخانه، کدنویسی را شروع کنید!

دریافت Client ID و Client Secret برای OAuth در Google Cloud Console

از آنجایی که جی‌میل دیگر احراز هویت با نام کاربری و رمز عبور مستقیم را پشتیبانی نمی‌کند، شما باید از OAuth 2.0 برای اتصال استفاده کنید. OAuth 2.0 یک چارچوب مجوز قوی را فراهم می‌کند که به برنامه‌ها اجازه می‌دهد به طور ایمن به داده‌های کاربر دسترسی پیدا کنند بدون اینکه اعتبارنامه‌های حساس را افشا کنند.

مراحل زیر شما را در فرآیند دریافت Client ID و Client Secret از Google Cloud Console راهنمایی می‌کند، به‌ویژه برای اتصال به یک صندوق پستی از طریق IMAP.

  1. دسترسی به Google Cloud Console

برای شروع، به Google Cloud Console بروید و با حساب Google خود وارد شوید. این پلتفرم به شما امکان مدیریت و پیکربندی خدمات Google برای پروژه‌هایتان را می‌دهد.

  1. ایجاد یک پروژه جدید
  • بر روی منوی کشویی پروژه در بالای صفحه کلیک کنید.
  • “پروژه جدید” را انتخاب کنید.
  • یک نام توصیفی برای پروژه خود وارد کرده و در صورت نیاز یک حساب صورتحساب انتخاب کنید.
  • بر روی “ایجاد” کلیک کنید تا پروژه جدید شما نهایی شود.
  1. فعال کردن Gmail API برای دسترسی به داده‌ها
  • در پنل ناوبری سمت چپ، بر روی “APIs & Services” کلیک کرده و سپس “Library” را انتخاب کنید.
  • به دنبال “Gmail API” بگردید.
  • بر روی ورودی API کلیک کرده و “فعال‌سازی” را بزنید.
  1. تنظیم صفحه تأیید OAuth
  • به “APIs & Services” بروید و سپس “OAuth consent screen” را انتخاب کنید.
  • بر اساس پایگاه کاربری خود، “External” یا “Internal” را انتخاب کنید.
  • فیلدهای لازم مانند نام برنامه و ایمیل پشتیبانی کاربر را پر کنید.
  • برای ادامه، بر روی “ذخیره و ادامه” کلیک کنید.
  1. ایجاد اعتبارنامه‌ها

اعتبارنامه‌ها برای ارتباط ایمن برنامه شما با خدمات Google ضروری است.

  • به “APIs & Services” بروید و “Credentials” را انتخاب کنید.
  • بر روی “+ ایجاد اعتبارنامه” کلیک کرده و “OAuth 2.0 Client IDs” را انتخاب کنید.
  1. پیکربندی Client ID OAuth 2.0 خود
  • نوع برنامه را به عنوان “Desktop App” انتخاب کنید.
  • نام کلاینت OAuth 2.0 خود را تعیین کنید.
  • URI‌های مجاز را اضافه کنید، مانند http://localhost برای تست محلی.
  • برای تولید اعتبارنامه‌ها، بر روی “ایجاد” کلیک کنید.
  1. بازیابی Client ID و Client Secret

پس از ایجاد اعتبارنامه‌ها، یک کادر گفتگویی نمایش داده می‌شود که Client ID و Client Secret شما را نشان می‌دهد. با کلیک بر روی دکمه دانلود، فایل حاوی اعتبارنامه‌ها را در فرمت JSON دانلود کنید.

  1. پیکربندی Scopeها
  • به “OAuth consent screen” برگردید.
  • بر روی “Add or Remove Scopes” کلیک کنید تا مجوز “https://mail.google.com/" را برای دسترسی به داده‌های صندوق پستی از طریق IMAP انتخاب کنید.

شما اکنون با موفقیت Client ID و Client Secret خود را برای OAuth در Google Cloud Console به‌دست آورده‌اید. این اعتبارنامه‌ها به شما اجازه می‌دهند تا کاربران را احراز هویت کرده و به طور ایمن به صندوق‌های پستی آن‌ها از طریق IMAP با استفاده از برنامه کلاینت IMAP متصل شوید.

دریافت توکن دسترسی برای Gmail API

توکن‌های دسترسی برای احراز هویت درخواست‌ها به APIها، مانند Gmail API ضروری هستند. این بخش توضیح می‌دهد که چگونه توکن دسترسی به‌دست آورید. ما از طریق یک مثال کد به فرآیند به‌دست‌آوری توکن دسترسی برای تعامل با داده‌های جی‌میل می‌پردازیم.

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

  • یک پروژه Google Cloud با فعال بودن Gmail API دارید.
  • اعتبارنامه‌های OAuth 2.0 (فایل JSON) از Google Cloud Console دانلود شده است.
  • کتابخانه Google.Apis.Auth در پروژه C# شما نصب شده است. می‌توانید آن را از طریق NuGet نصب کنید:
Install-Package Google.Apis.Auth

برای به‌دست آوردن توکن به‌صورت برنامه‌نویسی، ما اقدامات زیر را انجام خواهیم داد:

  1. فضای نام لازم Google.Apis.Auth.OAuth2 را وارد کنید تا از ویژگی‌های احراز هویت Google استفاده کنید.
  2. یک متد ایستا و غیرهمزمان GetAccessToken ایجاد کنید که مسیر فایل JSON حاوی اعتبارنامه‌های OAuth 2.0 را به عنوان آرگومان بپذیرد.

به‌دست‌آوردن متد GetAccessToken شامل مراحل زیر خواهد بود:

  1. تعریف scopeهای لازم برای Gmail API. در این مورد، ما دسترسی به حساب جی‌میل کاربر را درخواست می‌کنیم.
  2. استفاده از متد GoogleClientSecrets.FromFile برای بارگذاری اسرار کلاینت OAuth 2.0 از فایل JSON مشخص شده.
  3. استفاده از متد GoogleWebAuthorizationBroker.AuthorizeAsync برای آغاز فرآیند مجوز. این متد از کاربر می‌خواهد تا احراز هویت کرده و دسترسی را مجاز کند.

پس از موفقیت‌آمیز بودن احراز هویت، توکن دسترسی بازگشت داده می‌شود که به شما اجازه می‌دهد درخواست‌های احراز هویت شده به Gmail API ارسال کنید.

در اینجا مثال کد برای بازیابی توکن دسترسی آورده شده است:

using Google.Apis.Auth.OAuth2;
static async Task<string> GetAccessToken(string pathToAccessParameters)
{
// Gmail API scope
string[] scopes = { "https://mail.google.com/" };
// Use the JSON file with OAuth 2.0 credentials
var clientSecrets = GoogleClientSecrets.FromFile(pathToAccessParameters).Secrets;
// Acquire tokens
var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
clientSecrets,
scopes,
"username (e.g. username@gmail.com)",
CancellationToken.None);
return credential.Token.AccessToken;
}

شما به‌طور موفقیت‌آمیزی متدی برای به‌دست آوردن توکن دسترسی برای Gmail API با استفاده از OAuth 2.0 در C# پیاده‌سازی کرده‌اید. این توکن دسترسی به برنامه شما اجازه می‌دهد تا عملیات مجاز را به نمایندگی از کاربر انجام دهد. به یاد داشته باشید که توکن دسترسی را به‌طور ایمن مدیریت کرده و در صورت نیاز آن را تازه کنید تا دسترسی کاربر حفظ شود.

اتصال به جی‌میل از طریق IMAP

این بخش شما را در فرآیند اتصال به جی‌میل با استفاده از Aspose.Email for .NET راهنمایی خواهد کرد. ما کد لازم برای برقراری یک اتصال ایمن و بازیابی پیام‌های ایمیل از یک حساب جی‌میل را بررسی خواهیم کرد.

قبل از شروع، اطمینان حاصل کنید که متدی برای بازیابی توکن دسترسی برای احراز هویت دارید، همانطور که در بخش قبلی توضیح داده شد.

به عنوان مثال، ما یک کلاینت IMAP با پارامترهای لازم ایجاد کرده و پیام‌ها را از پوشه “صندوق ورودی” لیست خواهیم کرد:

  1. متد GetAccessToken را فراخوانی کنید و مسیر فایل اعتبارنامه‌های OAuth 2.0 را به آن پاس دهید. این متد توکن دسترسی لازم برای احراز هویت را باز می‌گرداند.

  2. یک نمونه از ImapClient با استفاده از پارامترها ایجاد کنید.

    Host: "imap.gmail.com" سرور IMAP برای جی‌میل را مشخص می‌کند.

    Port: 993 پورت امن برای IMAP از طریق SSL است.

    Username: آدرس ایمیل جی‌میل شما.

    Access Token: توکن دسترسی که از متد GetAccessToken دریافت شده است.

    Use OAuth: پارامتر true نشان‌دهنده این است که از OAuth برای اتصال استفاده می‌شود.

    Security Options: SecurityOptions.SSLAuto اطمینان می‌دهد که مذاکره SSL به‌طور خودکار انجام می‌شود.

  3. متد SelectFolderAsync را فراخوانی کنید تا پوشه صندوق پستی که می‌خواهید به آن دسترسی پیدا کنید را مشخص کنید—در این مورد، صندوق ورودی.

  4. متد ListMessages را فراخوانی کنید تا لیستی از پیام‌های ایمیل از پوشه انتخاب‌شده بازیابی شود. ما تعداد پیام‌های بازیابی‌شده را خروجی می‌دهیم و از هر پیام برای چاپ خط موضوع استفاده می‌کنیم.

در اینجا کد C# برای اتصال به جی‌میل با IMAP آورده شده است:

using Aspose.Email.Clients;
using Aspose.Email.Clients.Base;
using Aspose.Email.Clients.Imap;
var accessToken =
await GetAccessToken(
"googleusercontent.com.json");
// Connect to Gmail IMAP with OAuth
using var client = new ImapClient("imap.gmail.com", 993, "dmitbox@gmail.com", accessToken, true, SecurityOptions.SSLAuto);
// Select the Inbox folder
await client.SelectFolderAsync(ImapFolderInfo.InBox);
// Retrieve messages
var messages = client.ListMessages();
Console.WriteLine($"Number of messages: {messages.Count}");
foreach (var message in messages)
{
Console.WriteLine(message.Subject);
}

شما اکنون با موفقیت به جی‌میل از طریق IMAP با استفاده از C# و Aspose.Email .NET متصل شده‌اید.

البته، متدهای ImapClient استفاده‌شده در مثال بالا تنها چند نمونه هستند. Aspose.Email تقریباً تمام قابلیت‌های پروتکل IMAP را در سمت کلاینت پوشش می‌دهد. این شامل ویژگی‌هایی مانند مدیریت پوشه، بازیابی پیام‌ها و مدیریت پیوست‌ها است. همچنین پشتیبانی از عملیات پیشرفته مانند جستجو و فیلتر کردن پیام‌ها را فراهم می‌کند.

نتیجه‌گیری

در این مقاله، ما تکنیک‌های کار با جی‌میل از طریق پروتکل IMAP با استفاده از C# را بررسی کردیم. ما نحوه به‌دست آوردن اعتبارنامه‌های OAuth 2.0 از Google Cloud Console، بازیابی توکن‌های دسترسی و اتصال ایمن به جی‌میل برای مدیریت ایمیل‌ها را پوشش دادیم.

با استفاده از مثال‌های کد ارائه‌شده، می‌توانید قابلیت‌های جی‌میل را به برنامه‌های خود ادغام کنید و دسترسی و مدیریت ایمیل را بهینه کنید.

نمونه‌های کد توسط کتابخانه پیشرفته و قوی Aspose.Email for .NET ارائه شده است که همچنین تعداد زیادی منبع رایگان را ارائه می‌دهد:

این منابع برای حداکثر کردن پتانسیل کتابخانه در پروژه‌های شما بسیار ارزشمند هستند.

همچنین ببینید