跳過到頁腳內容
使用IRONPDF

如何使用 IronPDF 從 C# 在電子郵件中以附件形式傳送產生的 PDF 檔案

在 .NET 應用程式中,自動交付文件是一項常見需求。 無論是分發發票、報告還是收據,開發人員都需要一種可靠的方法來以程式設計方式建立 PDF 文件並直接透過電子郵件發送。 將 PDF 文件作為電子郵件附件發送的功能簡化了業務工作流程,並改善了客戶溝通。 在許多事件驅動型應用程式中,例如按鈕點擊或規劃任務,電子郵件發送方法甚至可以包含字串主題、物件寄件者和 EventArgs 等參數,作為系統工作流程的一部分。 這樣即使在處理模糊文件或其他動態產生的資源時,也能確保您的流程有效率地運作。

本教學課程示範如何將IronPDF 的 HTML 到 PDF 轉換功能與 C# 電子郵件功能結合,以及如何從 C# 將產生的 PDF 檔案作為電子郵件附件傳送。 使用 C#,開發人員只需幾行程式碼即可產生 PDF 文件,將其作為附件添加到郵件中,並向任何收件人發送電子郵件。

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 1 - IronPDF

C#中產生PDF和發送電子郵件需要哪些工具?

此工作流程由兩個元件組成:PDF 產生庫和電子郵件發送機制。 IronPDF 可處理從 HTML 內容建立 PDF 文檔,而 .NET 透過 System.Net.Mail 或現代MailKit 庫支援電子郵件功能。

透過 Visual Studio 的解決方案資源管理器或套件管理器控制台安裝 IronPDF NuGet 套件:

Install-Package IronPdf

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 2 - 安裝

若要使用現代電子郵件功能,請安裝 MailKit:

Install-Package MailKit

IronPDF 使用基於 Chromium 的渲染引擎,可從 HTML、CSS 和 JavaScript 產生像素級完美的 PDF。 該程式庫可在 Windows、Linux 和 macOS 環境下運行,.NET Core 應用程式可受益於跨平台相容性。

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 3 - 功能

開發者如何使用 C# 在記憶體中產生 PDF?

ChromePdfRenderer類別將 HTML 內容轉換為 PDF 文件。 產生的PdfDocument物件不會將 PDF 檔案儲存到磁碟,而是透過其BinaryData屬性或透過其Stream屬性建立一個新的MemoryStream來直接存取二進位資料。

using IronPdf;
// Create a new instance of the renderer
var renderer = new ChromePdfRenderer();
// Generate PDF document from HTML content
string htmlContent = @"
    <h1>Order Confirmation</h1>
    <p>Thank you for your purchase.</p>
    <p>Order Total: $99.99</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(htmlContent);
// Access PDF as byte array for file attachment
byte[] pdfBytes = pdf.BinaryData;
using IronPdf;
// Create a new instance of the renderer
var renderer = new ChromePdfRenderer();
// Generate PDF document from HTML content
string htmlContent = @"
    <h1>Order Confirmation</h1>
    <p>Thank you for your purchase.</p>
    <p>Order Total: $99.99</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(htmlContent);
// Access PDF as byte array for file attachment
byte[] pdfBytes = pdf.BinaryData;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

RenderHtmlAsPdf方法接受一個 HTML 字串,並傳回一個完全渲染的 PDF 文件。 BinaryData屬性以位元組陣列的形式提供 PDF 內容,這是將附件新增至電子郵件訊息所需的精確格式。 這種方法完全避免了檔案系統操作,從生成到交付的整個過程中,PDF 檔案都保存在記憶體中,如下面的螢幕截圖所示。

輸出

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 4 - PDF 輸出

對於更複雜的文檔,IronPDF 透過可選的BasePath參數支援外部 CSS 和圖像,從而實現具有品牌樣式的專業文檔佈局。

如何使用 IronPDF 從 C# 發送生成的 PDF 文件作為電子郵件附件:圖 5 - 如何使用 C# 發送生成的 PDF 文件作為電子郵件附件 - IronPDF

如何將記憶體中的 PDF 檔案附加到電子郵件中?

MailKit 為 .NET 應用程式和 Web 應用程式提供了一種現代化的、微軟推薦的電子郵件發送方式。 BodyBuilder類別透過直接接受位元組陣列來處理附件,從而可以輕鬆地與 IronPDF 整合。

using IronPdf;
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
// Generate PDF document with IronPDF
var renderer = new ChromePdfRenderer();
string HTML = "<h1>Monthly Report</h1><p>Generated automatically.</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
// Build new email message
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Sender", "sender@example.com"));
message.To.Add(new MailboxAddress("Recipient", "recipient@example.com"));
message.Subject = "Your Report is Ready";
// Create body with PDF attachment
var builder = new BodyBuilder();
builder.TextBody = "Please find your report attached.";
builder.Attachments.Add("Report.pdf", pdf.BinaryData, new ContentType("application", "pdf"));
message.Body = builder.ToMessageBody();
// Send email via SMTP server
using var client = new SmtpClient();
await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls);
await client.AuthenticateAsync("username", "password");
await client.SendAsync(message);
await client.DisconnectAsync(true);
using IronPdf;
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
// Generate PDF document with IronPDF
var renderer = new ChromePdfRenderer();
string HTML = "<h1>Monthly Report</h1><p>Generated automatically.</p>";
PdfDocument PDF = renderer.RenderHtmlAsPdf(html);
// Build new email message
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Sender", "sender@example.com"));
message.To.Add(new MailboxAddress("Recipient", "recipient@example.com"));
message.Subject = "Your Report is Ready";
// Create body with PDF attachment
var builder = new BodyBuilder();
builder.TextBody = "Please find your report attached.";
builder.Attachments.Add("Report.pdf", pdf.BinaryData, new ContentType("application", "pdf"));
message.Body = builder.ToMessageBody();
// Send email via SMTP server
using var client = new SmtpClient();
await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls);
await client.AuthenticateAsync("username", "password");
await client.SendAsync(message);
await client.DisconnectAsync(true);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此程式碼範例透過一次操作即可建立完整的 PDF 轉電子郵件工作流程範例。 BodyBuilder.Attachments.Add方法接受三個參數:收件者將看到的檔案名稱、IronPDF 的 PDF 位元組陣列以及指定附件格式為application/pdf MIME 類型。 非同步方法確保操作不會阻塞呼叫線程,這對於處理多個並發請求的 Web 應用程式至關重要。

SecureSocketOptions.StartTls參數啟用與 SMTP 伺服器位址的加密通信,從而在傳輸過程中保護憑證和電子郵件正文內容。 請將佔位符 SMTP 用戶端設定替換為您的電子郵件提供者的設定值。 請注意,像 Gmail 這樣的服務需要套用密碼才能進行 SMTP 驗證。

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 6 - 跨平台相容性

如何將System.Net.Mail用作文件附件的替代方案?

對於使用較舊 .NET 版本或相依性最少的項目, System.Net.Mail提供內建的電子郵件功能。 雖然微軟建議在新開發專案中使用 MailKit,但這種方法對於較簡單的場景仍然可行。 以下程式碼示範了一個使用SmtpClient客戶端和MailMessage類別的完整工作範例。

using IronPdf;
using System.Net;
using System.Net.Mail;
// Generate PDF document
var renderer = new ChromePdfRenderer();
PdfDocument PDF = renderer.RenderHtmlAsPdf("<h1>Invoice #1001</h1>");
// Create new MailMessage with attachment
using var message = new MailMessage("sender@example.com", "recipient@example.com");
message.Subject = "Invoice Attached";
message.Body = "Your invoice is attached to this email.";
// Attach PDF file from new MemoryStream
var stream = new MemoryStream(pdf.BinaryData);
message.Attachments.Add(new Attachment(stream, "Invoice.pdf", "application/pdf"));
// Send email via SMTP server
using var client = new SmtpClient("smtp.example.com", 587);
client.Credentials = new NetworkCredential("username", "password");
client.EnableSsl = true;
await client.SendMailAsync(message);
using IronPdf;
using System.Net;
using System.Net.Mail;
// Generate PDF document
var renderer = new ChromePdfRenderer();
PdfDocument PDF = renderer.RenderHtmlAsPdf("<h1>Invoice #1001</h1>");
// Create new MailMessage with attachment
using var message = new MailMessage("sender@example.com", "recipient@example.com");
message.Subject = "Invoice Attached";
message.Body = "Your invoice is attached to this email.";
// Attach PDF file from new MemoryStream
var stream = new MemoryStream(pdf.BinaryData);
message.Attachments.Add(new Attachment(stream, "Invoice.pdf", "application/pdf"));
// Send email via SMTP server
using var client = new SmtpClient("smtp.example.com", 587);
client.Credentials = new NetworkCredential("username", "password");
client.EnableSsl = true;
await client.SendMailAsync(message);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

關鍵區別在於,在附加 PDF 檔案之前,需要從位元組陣列建立一個新的 MemoryStream。 Attachment 類別的建構子接受流、檔名和 MIME 類型作為參數。 MailMessage 和 SmtpClient 都用 using 語句包裹起來,以確保在發送完成後正確釋放資源。 message.Attachments.Add 方法會從流中建立一個新的附件物件。

輸出

如何使用 IronPDF 從 C# 發送產生的 PDF 檔案作為電子郵件附件:圖 7 - 產生的 PDF 輸出

對於需要 OAuth 驗證、IMAP 支援或複雜 MIME 處理等進階功能的新項目,請選擇 MailKit。 對於需求較簡單的情況,或盡量減少外部相依性是首要任務時,請使用 System.Net.Mail。

PDF電子郵件附件有哪些實際應用?

這種PDF產生和電子郵件發送模式支援多種業務場景。 發票自動化系統會在交易完成後立即發送購買確認訊息。 報告分發功能可將預定的分析結果自動發送給利害關係人,無需人工幹預。 收據產生功能可為顧客提供購買憑證。 每個使用場景都能受益於自動建立 PDF 文件並將其作為附件發送的功能。

與基於文件的替代方案相比,內存式方法具有優勢。 應用程式避免了磁碟 I/O 開銷,並消除了臨時檔案清理的需求。 對於高流量的Web應用程式來說,這種效率就顯得尤為重要。

IronPDF 的渲染選項可自訂頁邊距、頁首、頁尾和頁面大小。 開發人員可以建立適合面向客戶的溝通的專業文件輸出,包括純文字或 HTML 格式的電子郵件正文內容以及 PDF 附件。

結論

將 IronPDF 與 C# 電子郵件庫結合使用,可建立高效率的自動化文件交付工作流程。 IronPDF 的 BinaryData 屬性可以直接以位元組陣列的形式存取 PDF 內容,而 MailKit 或 System.Net.Mail 可以無縫地處理電子郵件傳輸。 這種方法透過避免不必要的檔案系統互動來保持操作效率。

此模式適用於從簡單的通知郵件到複雜的文件自動化系統的各種應用場景。 無論是建立發票系統、報表產生器或客戶溝通工具,這種記憶體中的 PDF 轉電子郵件工作流程都能提供堅實的基礎。 您可以下載完整的範例程式碼,並根據具體的專案需求進行修改。

開始免費試用,探索 IronPDF 的 PDF 產生功能,或檢視生產部署的授權選項

如何使用 IronPDF 從 C# 發送產生的 PDF 文件作為電子郵件附件:圖 8 - 許可

常見問題解答

如何使用 C# 將產生的 PDF 作為電子郵件附件傳送?

使用 IronPDF,您可以通過將 IronPDF for .NET 的 PDF 創建功能與 .NET 的電子郵件發送功能相結合,輕鬆地將生成的 PDF 文件作為電子郵件附件發送。

在 .NET 應用程式中透過電子郵件傳送 PDF 檔案有什麼好處?

在 .NET 應用程式中透過電子郵件傳送 PDF 檔案有助於自動化文件傳送、簡化業務工作流程並加強客戶溝通。

IronPDF 能否處理 PDF 中用於電子郵件附件的動態內容?

是的,IronPdf 能動態產生 PDF 內容,因此適用於需要將客製化 PDF 作為電子郵件附件傳送的事件驅動應用程式。

IronPDF 的電子郵件發送方法通常使用哪些參數?

常見的參數包括電子郵件主題、寄件者資訊以及 EventArgs,以確保在事件驅動的應用程式中能有效率地處理。

為什麼 IronPDF 適合自動化文件傳送?

IronPDF 適合自動化文件傳送,因為它提供可靠的 PDF 建立功能,並可與 C# 電子郵件傳送功能無縫整合。

是否可以使用 IronPDF 排程發送 PDF 電子郵件?

是的,IronPDF 可以整合到排程任務中,在指定時間自動發送 PDF 電子郵件,提高工作流程效率。

IronPDF 是否支援從各種資料來源建立 PDF 作為電子郵件附件?

IronPDF 支援從多個資料來源建立 PDF,讓開發人員可以為電子郵件附件產生全面的文件。

IronPdf 如何加強與客戶的電子郵件溝通?

IronPDF 允許以附件形式生成和發送詳細的 PDF 文件,從而提高了與客戶進行電子郵件溝通的專業性和清晰度。

我可以使用 IronPDF 以 PDF 附件的形式發送發票和報告嗎?

是的,IronPDF 是以 PDF 附件形式生成和發送發票、報告和其他文件的理想選擇,可滿足各種商業需求。

IronPDF 在改善業務工作流程方面扮演什麼角色?

IronPDF 通過實現 PDF 文件的無縫創建和分發,減少了人工干預和錯誤,從而改善了業務工作流程。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。