
添加常规附件
添加内联附件
添加参考附件
添加嵌入式邮件
将所有附件作为单独文件保存到 MSG 中
电子邮件附件是随电子邮件一起发送的文件,允许用户共享文档、图像、视频或任何其他数字内容。有效地处理电子邮件附件是现代通信系统的一个重要方面,也是 C# 开发人员在其应用程序中寻求无缝管理附件的强大解决方案的一个重要方面。
管理电子邮件附件的 C# .NET API
为了处理电子邮件附件,我们将使用 Aspose.Email for .NET,这是一个功能强大、全面的 API,专为 C# 开发人员在其 .NET 应用程序中处理电子邮件信息和各种相关任务而设计。它为创建、处理、转换和管理邮件提供了广泛的功能,使其成为需要将电子邮件功能集成到软件应用程序中的企业和开发人员的重要工具。要利用 API 的强大功能,请下载其 DLL 或从 NuGet 安装。
添加常规附件
常规附件是电子邮件中包含的独立文件,通常在正文中显示为单独的图标或链接。

Aspose.Email 直观的 API 只需几行代码就能为邮件添加常规附件。通过下面的步骤和代码示例,您将创建一个示例电子邮件 (MSG),并使用 C# 中的 MapiMessage 类为其添加一个文件附件("document.pdf"):
创建或加载 MapiMessage。
将 "document.pdf "的内容读入字节数组。
将带有名称("document.pdf")和数据的附件添加到消息的 Attachments 集合中。
// Create a sample MSG and add document.pdf file as attachment
var msg = new MapiMessage("user1@from.com", "user2@to.com", "This is subject", "This is body");
var data = File.ReadAllBytes("document.pdf");
msg.Attachments.Add("document.pdf", data);添加内联附件
内联附件旨在显示在电子邮件正文中。这通常用于将图像或其他媒体直接嵌入电子邮件内容,使收件人无需打开单独的附件即可查看内容。

邮件内容中的图片是内联附件。Aspose.Email API 允许在对附件执行其他操作前检查其是否为内联附件,下面的代码示例演示了如何执行此任务。
使用 MapiMessage.Load() 方法从文件中加载电子邮件。
遍历附件集合。
对于集合中的每个附件,打印出它们的显示名称以及表示它们是内联还是常规附件的布尔值。
// Check if the Attachment is Inline or Regular
var msg = MapiMessage.Load("message.msg");
foreach (var attach in msg.Attachments)
{
Console.WriteLine($"{attach.DisplayName} : {attach.IsInline}");
}添加参考附件
参考附件不包含电子邮件中的实际文件内容。相反,它们包含指向外部资源的链接,例如托管在网络服务器上的图像。当收件人打开邮件时,他们的客户端或网络浏览器就会从指定的 URL 获取这些资源来显示内容。因此,用户可以在发送邮件时附上存储在 Google Drive 中文件的链接。你可以创建一个链接附件,将文件链接到 Google Drive 上的文件,而不是直接将文件附加到邮件中。

下面的代码示例演示了如何创建带有参考附件的邮件:
创建或加载 MapiMessage 对象。
使用 MapiAttachmentCollection.Add 方法向消息添加引用附件,并提供文件名、文件 URL、文件夹 URL 和提供程序名称。
使用 MapiAttachment.SetProperty 方法设置附件的权限类型,以指定谁可以编辑附件。
您还可以选择设置其他属性,如原始权限类型、附件是否为文件夹、提供程序端点 URL、预览 URL 和缩略图 URL。
使用 Save 方法将邮件保存到文件。
// Create a message
var msg = new MapiMessage("from@domain.com", "to@domain.com", "Outlook message file",
"This message with the Reference Attachment", OutlookMessageFormat.Unicode);
// Add reference attachment
msg.Attachments.Add("Document.pdf",
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive");
//Also, you can set additional attachment properties
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentPermissionType, AttachmentPermissionType.AnyoneCanEdit);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentOriginalPermissionType, 0);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentIsFolder, false);
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentProviderEndpointUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentPreviewUrl, "");
msg.Attachments[0].SetProperty(KnownPropertyList.AttachmentThumbnailUrl, "");
// Finally save the message
msg.Save(@"my.msg");添加嵌入式邮件
嵌入式邮件是指包含或嵌套在另一封邮件中的邮件。它们可以包含自己的内容、附件和元数据,通常封装在正文中或作为父邮件的附件。
这一概念常用于转发或回复电子邮件等情况,在这些情况下,原始邮件会作为新邮件的一部分包含在内。在这种情况下,原始邮件会成为新邮件正文中的嵌入邮件,保留其自身的内容,包括发件人、收件人和主题。这一功能是电子邮件通信的基本功能,可使用户在交换信息时保持连贯的对话主线。

Aspose.Email 为该功能的实现提供了组件。以下代码示例演示了如何在电子邮件中添加嵌入式对象:
创建 MapiMessage 类的实例。
使用 MapiMessage.Load() 方法从文件中加载现有邮件。
将加载的邮件作为附件添加到之前创建的邮件中。为此请使用 MapiAttachmentCollection.Add 方法。
var msg = new MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body");
var attachMsg = MapiMessage.Load("Weekly report.msg");
msg.Attachments.Add("Weekly report", attachMsg);将 MSG 中的所有附件保存为单独文件
下面的代码示例将向您展示如何从文件加载电子邮件信息,并将信息中的每个附件保存为具有原始文件名的单独文件。
创建 MapiMessage 类的实例。
遍历加载邮件的附件集合。
对于每个附件,使用保存方法将其保存为单独文件,确保每个附件都以其原始文件名保存。
// Create an instance of MapiMessage from file
var msg = MapiMessage.Load("message.msg");
// Iterate through the attachments collection
foreach (var attachment in msg.Attachments)
{
// Save the individual attachment
attachment.Save(attachment.FileName);
}结论
在本文中,我们探讨了如何在电子邮件中添加不同类型的附件和嵌入对象,以及如何用 C# 将附件保存到单独的文件中,并提供了简明的代码示例来说明这些过程。Aspose.Email for .NET是一种多功能解决方案,可帮助开发人员有效地管理电子邮件附件,增强应用程序中的通信任务,从而确保为最终用户提供连贯、无缝的体验。
渝公网安备50010702505508