作为 C# 开发人员,您可以轻松地以编程方式从电子邮件中提取和保存附件。在本文中,您将学习如何使用 C# 从电子邮件中保存附件。
本文讨论/涵盖了以下主题:
用于保存电子邮件附件的 C# API
为了保存 MSG 文件中的附件,我们将使用 GroupDocs.Viewer for .NET API。它是一个强大的文档查看器 API,无需安装任何外部软件即可呈现和显示广泛使用的文件格式。它还可以让您快速查看Word、Excel、PowerPoint、Outlook 电子邮件、Project、PDF、HTML 和 XML。
您可以 下载 API 的 DLL 或使用 NuGet 安装它。
Install-Package GroupDocs.Viewer
使用 C# 从电子邮件中提取和保存附件
您可以按照以下步骤以编程方式从电子邮件 MSG 文件中提取和保存附件:
- 首先,使用 Viewer 类加载 MSG 文件。
- 然后,调用Viewer.GetAttachments()方法获取加载的MSG文件的所有附件。以附件集合的形式获取结果。
- 对于集合中的每个附件,通过调用 Viewer.SaveAttachment() 方法保存附件。传递附件对象和文件路径以保存它。
以下代码示例展示了如何使用 C# 提取和保存电子邮件 MSG 文件中包含的附件。
string outputPath = @"C:\Files\Viewer\";
// 初始化 API 并加载 MSG 文件
Viewer viewer = new Viewer(@"C:\Files\Viewer\with_attachments.msg");
// 获取附件
IList<Attachment> attachments = viewer.GetAttachments();
foreach (Attachment attachment in attachments)
{
// 保存附件
string filePath = Path.Combine(outputPath, attachment.FileName);
viewer.SaveAttachment(attachment, File.OpenWrite(filePath));
}
使用 C# 将电子邮件中的附件另存为 PDF
您可以按照以下步骤以编程方式将电子邮件附件保存为 PDF:
- 使用附加的文件名和文件路径创建 Attachment 类的实例。
- 初始化 MemoryStream 类的实例。
- 使用 Viewer 类加载 MSG 文件。
- 然后,调用 Viewer.SaveAttachment() 方法并将 Attachment 和 MemoryStream 对象作为输入参数传递。它将提取并保存在内存流中的指定附件。
- 现在,使用 Viewer 类加载 MemoryStream 对象。
- 然后,使用输出 PDF 文件路径创建 PdfViewOptions 类的实例。
- 最后,调用 Viewer.View() 方法将附件保存为 PDF 并查看。
以下代码示例展示了如何使用 C# 将电子邮件 MSG 文件中的附件保存为 PDF 并以 PDF 格式查看。
// 初始化附件
Attachment attachment = new Attachment("attachment-word.doc", "attachment-word.doc");
MemoryStream attachmentStream = new MemoryStream();
// 初始化 API 并加载 MSG 文件
using (Viewer viewer = new Viewer(@"C:\Files\Viewer\with_attachments.msg"))
{
// 在流中保存附件
viewer.SaveAttachment(attachment, attachmentStream);
}
// 初始化 API 并加载附件流
using (Viewer viewer = new Viewer(attachmentStream))
{
// 定义 PDF 视图选项
PdfViewOptions viewOptions = new PdfViewOptions("C:\\Files\\Viewer\\output.pdf");
// 以 PDF 格式查看
viewer.View(viewOptions);
}
获得免费许可证
您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 C# 提取和保存电子邮件 MSG 文件中包含的附件。此外,您还了解了如何以编程方式将特定附件保存为 PDF。此外,您可以使用 documentation 了解更多关于 GroupDocs.Viewer for .NET API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。