跳至页脚内容
使用IRONPDF

如何使用 IronPDF 通过 C# 在电子邮件中将生成的 PDF 文件作为附件发送

自动交付文档是 .NET 应用程序的常见要求。 无论是分发发票、报告还是收据,开发人员都需要一种可靠的方法来以编程方式创建 PDF 文档并直接通过电子邮件发送。 将 PDF 文档作为电子邮件附件发送的功能简化了业务工作流程并改善了客户沟通。 在许多事件驱动型应用程序(如按钮点击或计划任务)中,作为系统工作流的一部分,电子邮件发送方法甚至可能包括字符串主题、对象发件人和 EventArgs 等参数。 这将确保您的流程即使在处理 dim 文档或其他动态生成的资产时也能保持高效。

本教程演示了如何将 IronPDF 的 HTML 转 PDF 功能与 C# 电子邮件功能相结合,以及如何将生成的 PDF 文件作为附件从 C# 发送到电子邮件。 使用 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 文件保存在内存中,如下图所示。

输出

!a href="/static-assets/pdf/blog/send-pdf-files-as-attachment/send-pdf-files-as-attachment-4.webp">How to Send Generated PDF File as Attachment in Email from C# Using IronPDF:图片 4 - PDF 输出

对于更复杂的文档,IronPDF 通过可选的 BasePath 参数支持 外部 CSS 和图片,从而实现具有品牌风格的专业文档布局。

!a href="/static-assets/pdf/blog/send-pdf-files-as-attachment/send-pdf-files-as-attachment-5.webp">How to Send Generated PDF File as Attachment in Email from C# Using IronPDF:图片 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 类型。 异步方法确保操作不会阻塞调用线程,这对于处理多个并发请求的网络应用程序至关重要。

SecureSocketOptions.StartTls参数可启用与 SMTP 服务器地址的加密通信,在传输过程中保护凭证和电子邮件正文内容。 用电子邮件提供商的配置值替换占位符 SMTP 客户端设置。 请注意,Gmail 等服务需要使用应用程序密码进行 SMTP 验证。

!a href="/static-assets/pdf/blog/send-pdf-files-as-attachment/send-pdf-files-as-attachment-6.webp">How to Send Generated PDF File as Attachment in Email from C# Using IronPDF:图片 6 - 跨平台兼容性

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

对于使用旧版 .NET 或需要最少依赖性的项目,System.Net.Mail 提供了内置的电子邮件功能。 虽然 Microsoft 推荐 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。附件类构造函数接受流、文件名和 MIME 类型作为参数。 MailMessage 和 SmtpClient 都用 using 语句封装,以确保发送完成后资源的适当处理。 message.Attachments.Add 方法从数据流中创建一个新的附件对象。

输出

如何使用 IronPDF 通过 C# 在电子邮件中将生成的 PDF 文件作为附件发送:图片 7 - 生成的 PDF 输出

对于需要 OAuth 身份验证、IMAP 支持或复杂 MIME 处理等高级功能的新项目,请选择 MailKit。 如果要求较为简单,或优先考虑尽量减少外部依赖性,请使用 System.Net.Mail。

PDF 电子邮件附件有哪些实际应用?

这种 PDF 生成和电子邮件发送模式支持多种业务场景。 发票自动化在交易完成后立即发送购买确认。 报告分发无需人工干预即可向利益相关者提供预定的分析结果。 收据生成可为客户提供即时的购买记录。 每个用例都能受益于创建 PDF 文档并将其作为附件自动发送的功能。

与基于文件的替代方法相比,内存方法具有优势。 应用程序可避免磁盘 I/O 开销并消除临时文件清理要求。 对于高流量的网络应用程序而言,这种效率尤为重要。

IronPDF 的渲染选项允许自定义页边、页眉、页脚和页面大小。 开发人员可以创建适合面向客户交流的专业文档输出,包括 PDF 附件旁边的纯文本或 HTML 格式的电子邮件正文内容。

结论

将 IronPDF 与 C# 电子邮件库相结合,可创建自动交付文档的高效工作流程。 IronPDF for .NET 的 BinaryData 属性可直接访问作为字节数组的 PDF 内容,而 MailKit 或 System.Net.Mail 可无缝处理电子邮件传输。 这种方法避免了不必要的文件系统交互,从而保持了操作效率。

翻译模式从简单的通知邮件到复杂的文档自动化系统。 无论是构建发票系统、报告生成器还是客户交流工具,这种内存 PDF 到邮件的工作流程都能提供坚实的基础。 可下载完整的工作示例代码,并根据具体项目要求进行调整。

开始免费试用,探索 IronPDF 的 PDF 生成功能,或 查看用于生产部署的许可选项

如何使用 IronPDF 通过 C# 在电子邮件中将生成的 PDF 文件作为附件发送:图片 8 - 许可

常见问题解答

如何用 C# 将生成的 PDF 作为电子邮件附件发送?

使用 IronPDF,您可以通过将其 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 如何加强与客户的电子邮件沟通?

通过允许生成和发送详细的 PDF 文档作为附件,IronPDF 提高了与客户进行电子邮件交流的专业性和清晰度。

能否使用 IronPDF 以 PDF 附件的形式发送发票和报告?

是的,IronPDF 是以 PDF 附件形式生成和发送发票、报告和其他文档的理想工具,可满足各种业务需求。

IronPDF 在改进业务工作流程方面发挥什么作用?

IronPDF 可实现 PDF 文档的无缝创建和分发,减少人工干预和错误,从而改进业务工作流程。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。