IRONSOFTWAREHOME

使用FluentEmail在C#中發送電子郵件

Sending Email in C# using FluentEmail

Tim Corey

30m 36s

在C#中發送交易郵件是許多企業軟體解決方案中的常見需求。 然而,正如Tim Corey在他的影片中所解釋的,使用FluentEmail在C#中發送電子郵件,這個過程並不必然困難。 無論您是想發送簡單的文字訊息、HTML電子郵件,還是處理群發郵件,FluentEmail提供了一種簡便的方法來實現使用現代方式和SMTP協定的電子郵件發送功能。

在本文中,我們將通過Tim Corey的影片來學習如何在C#中使用FluentEmail發送郵件,設置SMTP伺服器,建立動態HTML電子郵件消息,並有效地測試整個發送過程。

FluentEmail簡介

Tim首先解釋了背景:在C#中發送電子郵件過去依賴於較舊的工具如System.Net.Mail,但隨著.NET 5及更高版本的出現,很多已經被棄用。 這就是FluentEmail作為一個現代的電子郵件庫來填補這個空缺的位置,無論是簡單的資訊還是像HTML電子郵件和內嵌圖片這樣的複雜通信。

Tim指出目標是簡單地建立電子郵件,使用模板,甚至在不連接到生產伺服器的情況下進行測試。

設置控制台應用程式

在1:04,Tim建立了一個新的名為EmailDemoApp的控制台應用程式。他強調了使用static void Main(string[] args)或僅使用public static void Main時,不需要UI的簡單性。 這個乾淨的起點允許專注於電子郵件發送過程。

建立應用程式後,Tim將專案設置為目標.NET 5,這是從傳統.NET Framework升級到現代技術的做法,確保更好的電子郵件客戶端協議相容性。

通過套件管理器控制台安裝FluentEmail

接下來,在3:50,Tim使用套件管理器控制台來安裝FluentEmail.Smtp套件,這使得能夠使用SMTP客戶端在C#中發送電子郵件。 Tim還提到有MailGun和SendGrid等附加整合,但SMTP是最通用的選擇,可在大多數電子郵件客戶端和設置中工作。

使用以下命令,您可以手動安裝:

Install-Package FluentEmail.Smtp
SHELL

Tim確保我們還新增了FluentEmail.Core依賴關係,這是程式庫正常運作所必需的。

配置SMTP客戶端和伺服器

到6:10,Tim討論了使用新的SmtpClient配置來設置SMTP客戶端:

var sender = new SmtpSender(() => new SmtpClient("localhost")
{
    EnableSsl = false,
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = @"C:\Demos"
});

Tim強調此SMTP伺服器localhost用於本地測試。 在生產環境中,您會連接到您的真實SMTP伺服器,如Gmail的SMTP端點,可能會使用應用程式密碼以增強安全性。

他強調敏感設置應該移到像appsettings.json一樣的配置文件中,以提高安全性和靈活性。

發送簡單電子郵件訊息

在11:59,Tim轉向使用FluentEmail的電子郵件API發送簡單的消息。 他解釋說,使用以下程式碼範例建立了一個var email物件:

var email = await Email
    .From("tim@timco.com")
    .To("test@test.com", "Sue")
    .Subject("Thanks")
    .Body("Thanks for buying our product.")
    .SendAsync();

這樣,您可以通過方法鏈清楚地指定字串主題、字串電子郵件和消息主體。 var message(電子郵件)保存結果,允許進行錯誤檢查。

Tim指出,儘管電子郵件似乎來自tim@timco.com,但SMTP伺服器仍將基於登錄憑據進行認證(例如Gmail應用密碼)。

使用本地目錄查看電子郵件

一旦電子郵件消息被送出,Tim展示了它在本地資料夾中顯示為.eml文件的效果。 雖然可以用Outlook或記事本打開,但對於現有的電子郵件消息或批量測試來說,這並不是最友好的。

使用Papercut SMTP以便於測試

在17:03,Tim將儲存目錄的方法切換到使用Papercut SMTP,一個輕量級的假SMTP伺服器。

他修改了SMTP客戶端設置:

DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;

使用Papercut,每封測試電子郵件會立即出現在GUI中。 這使得檢查純文字和HTML內容更容易,並模擬真實的電子郵件客戶端如何呈現不同的格式。

使用Razor模板構建HTML電子郵件

在19:12,Tim指出靜態純文字不足以處理許多現實案例。 對於更動態的豐富HTML消息,他安裝了FluentEmail.Razor套件:

Install-Package FluentEmail.Razor
SHELL

他用以下方法更新專案設置:

<PreserveCompilationContext>true</PreserveCompilationContext>

以確保Razor模板正確編譯。

建立並使用Razor電子郵件模板

使用字串構建器(var builder)和Razor語法,Tim建立了一個動態電子郵件模板:

var builder = new StringBuilder();
builder.AppendLine("Dear @Model.FirstName,");
builder.AppendLine("<p>Thanks for purchasing @Model.ProductName.</p>");
builder.AppendLine("The TimCo Team");

然後他將此模板附加到var request中,使用以下程式碼:

await Email
    .UsingTemplate(builder.ToString(), new { FirstName = "Tim", ProductName = "Bacon Wrapped Bacon" })
    .SendAsync();

這種技術支持不同格式,如根據模板內容的純文字和HTML主體。

處理多個收件人和附件

雖然Tim的演示中沒有完全詳細說明,但FluentEmail可以通過調用.To()來輕鬆支持多個收件人,並為文件附件新增附件物件,類似於舊的.NET中的MailMessage物件或MailMessage類。

您可以使用新字串文件路徑或為內嵌圖片的內容ID建立附件。

在電子郵件發送過程中處理例外

Tim建議您應優雅地處理錯誤。 例如:

try
{
    var result = await Email.SendAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

這可以捕捉電子郵件發送過程中的任何SMTP或網路相關故障,特別是在出現SMTP協定問題時。

總結和最後的思考

大約在27:56,Tim總結道,使用FluentEmail在C#中發送電子郵件變得簡單明了——從發送hello world風格的簡單消息到專業的動態HTML電子郵件。

他還強調使用像appsettings.json這樣的配置文件保持SMTP伺服器詳細資訊和配置的靈活性的重要性,特別是在本地開發和像Azure Portal這樣的雲平台之間進行切換時。

無論您是想單獨發送郵件還是批量發送電子郵件,FluentEmail與Papercut SMTP結合提供了一種現代、高效的工作流程,與許多程式語言和生態系統相容。

最後的思考

感謝Tim Corey出色的影片,很明顯,現代C#中的電子郵件發送功能已經超越了基本的SmtpClient類和MailMessage類的處理。 在FluentEmail的幫助下,開發者可以快速建立新專案,配置SMTP連接,構建動態電子郵件內容,並在部署到生產環境之前在本地測試一切。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立