在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在電子郵件伺服器通信領域,網路郵件存取協定 (IMAP)(IMAP)物件在促進無縫存取儲存在郵件伺服器上的電子郵件訊息中扮演著關鍵角色。 將 .NET Framework 支援的新 IMAP 伺服器功能整合到 C# 應用程式中,使開發人員能夠構建強大的電子郵件客戶端、自動化電子郵件處理任務並提高生產力。 這本綜合指南探討了在 C# 中整合 IMAP 協議的基本原理,涵蓋了主要概念、IMAP 實施技術、閒置擴展,以及實用的代碼範例,以幫助開發人員在其應用程式中利用 IMAP 客戶端的功能。 本指南還探討了如何使用建立PDF文件IronPDF - 一個用於 PDF 生成和操作的強大 C# 程式庫和C# IMAP 功能來自 Rebex資料。
IMAP 是一種廣泛使用的協議,用於訪問和管理存儲在遠程郵件伺服器上的電子郵件。 與較舊的 POP3 協議不同,POP3 會將電子郵件下載到本地電子郵件客戶端並隨後將其從電子郵件伺服器上移除,而 IMAP 伺服器允許用戶直接在伺服器上查看第一封郵件,組織和操作電子郵件。 這使得可以在多個設備之間同步電子郵件,並提供了一種更靈活的電子郵件管理方法。
郵件同步:IMAP 使客戶端能夠將電子郵件、文件夾和郵箱狀態與伺服器同步,確保從任何設備一致訪問最新的電子郵件數據。
文件夾管理:IMAP 支援在伺服器上創建、重新命名、刪除和組織電子郵件文件夾,允許使用者將電子郵件整理成邏輯類別。
訊息檢索和操作:使用 IMAP,客戶端可以直接從伺服器檢索、搜尋、閱讀、移動、複製和刪除個別電子郵件訊息或整個線索。
要將 IMAP 功能整合到 C# 應用程序中,開發人員可以利用第三方庫,例如 MailKit 或 OpenPop.NET,這些庫提供對 IMAP 操作的全面支持。 讓我們來探索一個簡單的例子,說明如何使用MailKit連接用戶到IMAP服務器,檢索電子郵件訊息,並執行基本操作。
在我們進入程式碼範例之前,有幾個步驟需要執行,以獲取使用IMAP伺服器存取電子郵件所需的應用程式密碼。
前往您的 Gmail 帳戶,然後點擊「設定」。
在設定中,前往 IMAP 區段並啟用下列核取方塊。
接下來,前往您的 Google 帳戶,找到兩步驟驗證。
在兩步驗證頁面中向下捲動至底部並找到應用程式密碼。
接下來,輸入您的應用程式名稱,然後點擊建立按鈕。
應用程式密碼已成功生成。
一旦完成配置並創建應用程序密碼後,讓我們深入研究程式碼。
//Install-Package MailKit
using System;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;
class Program
{
static void Main(string [] args)
{
// IMAP server settings
string imapServer = "imap.gmail.com";
int imapPort = 993;
bool useSsl = true;
// IMAP credentials
string username = "buttwaleed121@gmail.com";//email Address
string password = "wiie scqg qxpr gqoz";// App Password
try
{
using (var client = new ImapClient())
{
// Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl);
// Authenticate with the server
client.Authenticate(username, password);
// Select the INBOX folder or any special folder
client.Inbox.Open(FolderAccess.ReadOnly);
// Search for unread messages
var searchQuery = SearchQuery.NotSeen;
var uids = client.Inbox.Search(searchQuery);
foreach (var uid in uids)
{
// Retrieve the message by UID
var message = client.Inbox.GetMessage(uid);
// Display message details
Console.WriteLine($"From: {message.From}");
Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"Date: {message.Date}");
Console.WriteLine($"Body: {message.TextBody}");
Console.WriteLine();
}
// Disconnect from the server
client.Disconnect(true);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
//Install-Package MailKit
using System;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;
class Program
{
static void Main(string [] args)
{
// IMAP server settings
string imapServer = "imap.gmail.com";
int imapPort = 993;
bool useSsl = true;
// IMAP credentials
string username = "buttwaleed121@gmail.com";//email Address
string password = "wiie scqg qxpr gqoz";// App Password
try
{
using (var client = new ImapClient())
{
// Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl);
// Authenticate with the server
client.Authenticate(username, password);
// Select the INBOX folder or any special folder
client.Inbox.Open(FolderAccess.ReadOnly);
// Search for unread messages
var searchQuery = SearchQuery.NotSeen;
var uids = client.Inbox.Search(searchQuery);
foreach (var uid in uids)
{
// Retrieve the message by UID
var message = client.Inbox.GetMessage(uid);
// Display message details
Console.WriteLine($"From: {message.From}");
Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"Date: {message.Date}");
Console.WriteLine($"Body: {message.TextBody}");
Console.WriteLine();
}
// Disconnect from the server
client.Disconnect(true);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
'Install-Package MailKit
Imports System
Imports MailKit.Net.Imap
Imports MailKit.Search
Imports MimeKit
Friend Class Program
Shared Sub Main(ByVal args() As String)
' IMAP server settings
Dim imapServer As String = "imap.gmail.com"
Dim imapPort As Integer = 993
Dim useSsl As Boolean = True
' IMAP credentials
Dim username As String = "buttwaleed121@gmail.com" 'email Address
Dim password As String = "wiie scqg qxpr gqoz" ' App Password
Try
Using client = New ImapClient()
' Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl)
' Authenticate with the server
client.Authenticate(username, password)
' Select the INBOX folder or any special folder
client.Inbox.Open(FolderAccess.ReadOnly)
' Search for unread messages
Dim searchQuery = SearchQuery.NotSeen
Dim uids = client.Inbox.Search(searchQuery)
For Each uid In uids
' Retrieve the message by UID
Dim message = client.Inbox.GetMessage(uid)
' Display message details
Console.WriteLine($"From: {message.From}")
Console.WriteLine($"Subject: {message.Subject}")
Console.WriteLine($"Date: {message.Date}")
Console.WriteLine($"Body: {message.TextBody}")
Console.WriteLine()
Next uid
' Disconnect from the server
client.Disconnect(True)
End Using
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub
End Class
在此程式碼範例中,我們使用 MailKit 連接至 IMAP 伺服器,使用提供的憑證進行驗證,並從 INBOX 資料夾中獲取未讀的電子郵件。 接著,我們遍歷未讀郵件的UID列表,根據UID檢索每封郵件,並顯示其詳細資訊,包括發件人、主題、日期和正文。
IronPDF 是一個強大的 C# 函式庫,旨在簡化在 .NET 應用程式中創建、操作和渲染 PDF 文件的過程。 憑藉其直觀的 API 和豐富的功能集,IronPDF 讓開發者能夠程式化地無縫生成、編輯和處理 PDF 檔案,增強他們應用程式的多樣性和功能性。 無論您是需要生成動態報告、將HTML內容轉換為PDF、從現有PDF中提取文本和圖像,還是要數位簽署文件,IronPDF 提供了一個全面的工具包來滿足您的PDF處理需求。 通過利用IronPDF,開發人員可以簡化與PDF相關的任務,輕鬆提供高品質的文件解決方案。
可以使用 NuGet 套件管理器安裝 IronPDF,只需執行以下命令。
Install-Package IronPdf
using System;
using System.Collections.Generic;
using System.IO;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;
using IronPdf;
using MailKit;
class Program
{
static void Main(string [] args)
{
// IMAP server settings
string imapServer = "imap.gmail.com";
int imapPort = 993;
bool useSsl = true;
// IMAP credentials
string username = "buttwaleed121@gmail.com";
string password = "wiie scqg qxpr gqoz";
try
{
using (var client = new ImapClient())
{
// Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl);
// Authenticate with the server
client.Authenticate(username, password);
// Select the INBOX folder
client.Inbox.Open(FolderAccess.ReadOnly);
// Search for unread messages
var searchQuery = SearchQuery.NotSeen;
var uids = client.Inbox.Search(searchQuery);
// Create a list to store message details
var messages = new List<string>();
// Retrieve details for the first 100 unread messages
for (int i = 0; i < Math.Min(uids.Count, 100); i++)
{
var uid = uids[i];
var message = client.Inbox.GetMessage(uid);
// Add message details to the list
messages.Add($"From: {message.From}");
messages.Add($"Subject: {message.Subject}");
messages.Add($"Date: {message.Date}");
messages.Add($"Body: {message.TextBody}");
messages.Add(""); // Add an empty line for separation
}
// Generate PDF report
GeneratePdfReport(messages);
// Disconnect from the server
client.Disconnect(true);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static void GeneratePdfReport(List<string> messages)
{
try
{
var pdf = new ChromePdfRenderer();
// Convert message details to HTML format
string htmlContent = "<h1>Not Seen Emails</h1><hr/>";
foreach (var message in messages)
{
htmlContent += $"<p style='padding-top:30px;'>{message}</p>";
}
// Render HTML content to PDF
var pdfOutput = pdf.RenderHtmlAsPdf(htmlContent);
// Save PDF to file
var outputPath = "Email_Report.pdf";
pdfOutput.SaveAs(outputPath);
Console.WriteLine($"PDF report generated successfully: {outputPath}");
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF report: {ex.Message}");
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;
using IronPdf;
using MailKit;
class Program
{
static void Main(string [] args)
{
// IMAP server settings
string imapServer = "imap.gmail.com";
int imapPort = 993;
bool useSsl = true;
// IMAP credentials
string username = "buttwaleed121@gmail.com";
string password = "wiie scqg qxpr gqoz";
try
{
using (var client = new ImapClient())
{
// Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl);
// Authenticate with the server
client.Authenticate(username, password);
// Select the INBOX folder
client.Inbox.Open(FolderAccess.ReadOnly);
// Search for unread messages
var searchQuery = SearchQuery.NotSeen;
var uids = client.Inbox.Search(searchQuery);
// Create a list to store message details
var messages = new List<string>();
// Retrieve details for the first 100 unread messages
for (int i = 0; i < Math.Min(uids.Count, 100); i++)
{
var uid = uids[i];
var message = client.Inbox.GetMessage(uid);
// Add message details to the list
messages.Add($"From: {message.From}");
messages.Add($"Subject: {message.Subject}");
messages.Add($"Date: {message.Date}");
messages.Add($"Body: {message.TextBody}");
messages.Add(""); // Add an empty line for separation
}
// Generate PDF report
GeneratePdfReport(messages);
// Disconnect from the server
client.Disconnect(true);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
static void GeneratePdfReport(List<string> messages)
{
try
{
var pdf = new ChromePdfRenderer();
// Convert message details to HTML format
string htmlContent = "<h1>Not Seen Emails</h1><hr/>";
foreach (var message in messages)
{
htmlContent += $"<p style='padding-top:30px;'>{message}</p>";
}
// Render HTML content to PDF
var pdfOutput = pdf.RenderHtmlAsPdf(htmlContent);
// Save PDF to file
var outputPath = "Email_Report.pdf";
pdfOutput.SaveAs(outputPath);
Console.WriteLine($"PDF report generated successfully: {outputPath}");
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF report: {ex.Message}");
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.IO
Imports MailKit.Net.Imap
Imports MailKit.Search
Imports MimeKit
Imports IronPdf
Imports MailKit
Friend Class Program
Shared Sub Main(ByVal args() As String)
' IMAP server settings
Dim imapServer As String = "imap.gmail.com"
Dim imapPort As Integer = 993
Dim useSsl As Boolean = True
' IMAP credentials
Dim username As String = "buttwaleed121@gmail.com"
Dim password As String = "wiie scqg qxpr gqoz"
Try
Using client = New ImapClient()
' Connect to the IMAP server
client.Connect(imapServer, imapPort, useSsl)
' Authenticate with the server
client.Authenticate(username, password)
' Select the INBOX folder
client.Inbox.Open(FolderAccess.ReadOnly)
' Search for unread messages
Dim searchQuery = SearchQuery.NotSeen
Dim uids = client.Inbox.Search(searchQuery)
' Create a list to store message details
Dim messages = New List(Of String)()
' Retrieve details for the first 100 unread messages
For i As Integer = 0 To Math.Min(uids.Count, 100) - 1
Dim uid = uids(i)
Dim message = client.Inbox.GetMessage(uid)
' Add message details to the list
messages.Add($"From: {message.From}")
messages.Add($"Subject: {message.Subject}")
messages.Add($"Date: {message.Date}")
messages.Add($"Body: {message.TextBody}")
messages.Add("") ' Add an empty line for separation
Next i
' Generate PDF report
GeneratePdfReport(messages)
' Disconnect from the server
client.Disconnect(True)
End Using
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub
Private Shared Sub GeneratePdfReport(ByVal messages As List(Of String))
Try
Dim pdf = New ChromePdfRenderer()
' Convert message details to HTML format
Dim htmlContent As String = "<h1>Not Seen Emails</h1><hr/>"
For Each message In messages
htmlContent &= $"<p style='padding-top:30px;'>{message}</p>"
Next message
' Render HTML content to PDF
Dim pdfOutput = pdf.RenderHtmlAsPdf(htmlContent)
' Save PDF to file
Dim outputPath = "Email_Report.pdf"
pdfOutput.SaveAs(outputPath)
Console.WriteLine($"PDF report generated successfully: {outputPath}")
Catch ex As Exception
Console.WriteLine($"Error generating PDF report: {ex.Message}")
End Try
End Sub
End Class
我們創建一個messages清單來存儲前100封未讀電子郵件的詳細資訊。
在檢索電子郵件詳細信息的迴圈中,我們將每個郵件的詳細信息添加到 messages 列表中。
在獲取所有未讀電子郵件或前100封電子郵件的詳細信息後,我們調用 GeneratePdfReport 方法來創建包含這些詳細信息的PDF報告。
在 GeneratePdfReport 方法中,我們將消息詳情轉換為 HTML 格式,並使用 IronPDF 將此 HTML 內容渲染為 PDF 文件。
PDF 報告保存為名為 "Email_Report.pdf" 的檔案。
您可以透過用實際的伺服器資訊替換 IMAP 伺服器預設設置和憑證並運行程式來測試此代碼。 它將連接到 IMAP 伺服器,檢索前 100 封未讀電子郵件的詳細資訊,生成包含這些詳細資訊的 PDF 報告,並將其保存到檔案中。
將 IMAP 功能整合到 C# 應用程式中,為電子郵件通訊、自動化和生產力提升開啟了新的可能性。 通過理解IMAP的基礎知識並利用強大的庫如MailKit .NET,開發人員可以輕鬆構建功能豐富的電子郵件客戶端、自動化電子郵件處理任務,以及簡化通信工作流程。
透過本指南提供的實用知識和代碼範例,開發人員可以在其 C# 應用程式中利用 IMAP 整合的強大功能,從而開拓電子郵件通訊創新和效率的新機會。 藉助於 IronPDF 這個多功能的 PDF 處理庫,您可以將附件保存為 PDF,或將電子郵件匯入為 PDF 文件,或將電子郵件存儲為 PDF 文檔。
欲了解更多關於 IronPDF 及其功能,請訪問官方網站。IronPDF 文件頁面.