Create MIME messages using C#

发送电子邮件时,您可能需要发送多媒体内容,例如图像、音频和视频。这就是 MIME(多用途互联网邮件扩展)消息发挥作用的地方。在本文中,我们将探讨如何以编程方式创建 EML 消息。通过本文的学习,您将了解 如何创建 MIME 消息,向电子邮件的 HTML 内容添加图像并将电子邮件保存为 EML 格式

.NET API 创建 MIME 消息

在您创建第一个 MIME 消息之前,第一步是在您的项目中安装 Aspose.Email for .NET。这是一个强大的库,适用于 C# 开发人员,提供了一整套用于处理电子邮件消息的工具,包括以编程方式创建 MIME 消息的能力。该库帮助开发人员轻松操作 MIME 消息的各个方面,例如附件、正文、头部、编码等。 您可以通过 NuGet 安装库或 下载 其 DLL。

PM> Install-Package Aspose.Email

从头开始创建 EML 文件

既然您的 API 已安装,现在是时候从头开始创建您的第一个 eml 文件了。最简单的方法之一是使用 Aspose.Email 中的 MailMessage 类。MailMessage 类允许您创建一个电子邮件消息对象,具有各种属性和方法,让您可以设置发件人、收件人、主题、正文、附件、头部和其他电子邮件的详细信息。

以下步骤和代码片段将帮助您从头开始创建 EML:

  • 使用默认构造函数创建一个新的 MailMessage 对象。
  • 根据您的需要设置 MailMessage 对象的属性。
  • 使用 Save 方法将 MailMessage 对象保存到 EML 文件中。
// Create a new MailMessage object
var eml = new MailMessage()
{
// Set the sender address
From = "sender@sender.com",
// Add a recipient address
To = "receiver@receiver.com",
// Set the subject
Subject = "New message",
// Set the HTML body
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
</body>
</html>"
};
// Save the MailMessage object to an EML file
eml.Save("message.eml", SaveOptions.DefaultEml);

MailMessage 类的 Save 方法接受两个参数:文件路径和保存选项。保存选项指定输出文件的格式。

向 HTML 内容添加图像

要执行此功能,您需要在 HTML 正文中嵌入图像。您可以使用 “img” 标签来实现这一点。

以下代码片段显示了如何向消息的 HTML 正文中添加图像。

  • HTML 正文包含一个图像标签,其源属性设置为 cid:image1
  • AlternateView 类用于获取包含嵌入图像的消息正文的替代视图。
  • LinkedResource 类用于表示嵌入的图像,其内容 ID 设置为 image1
  • 最后,将替代视图添加到消息的替代视图集合中。
// Create a new instance of MailMessage class
var eml = new MailMessage
{
// Set sender and recipient
From = new MailAddress("sender@domain.com"),
To = new MailAddress("recipient@domain.com"),
// Set subject and body
Subject = "New message with image",
HtmlBody = @"<!DOCTYPE html>
<html>
<head>
<style>
h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h3>New message</h3>
<p>This is a new message created by Aspose.Email.</p>
<img src='cid:myImage' />
</body>
</html>"
};
var alternateView = eml.AlternateViews.GetView(MediaTypeNames.Text.Html);
var imageResource = new LinkedResource(path + "image.png", MediaTypeNames.Image.Png)
{
ContentId = "image1"
};
alternateView.LinkedResources.Add(imageResource);
eml.Save("message_with_image.eml", SaveOptions.DefaultEml);

从 HTML 文件创建 EML 文件

一种方法是从 HTML 文件开始并将其转换为 EML。如果您有一个想要作为电子邮件消息发送的 HTML,这可能会很有用。 为此,我们首先需要准备 HTML 内容。我们将这个文件称为 content.html。以下是一个示例:

<!DOCTYPE html>
<html>
<head>
	<title>我的邮件</title>
</head>
<body>
	<h1>你好,</h1>
	<img src="logo.png" alt="Logo">
	<p>这是我创建的第一封 HTML 邮件。</p>
</body>
</html>

此外,您必须提前准备好包含在 HTML 中的所有图像,并在 HTML 文件中指定正确的路径。

现在,我们可以通过从 content.html 设置 HTML 正文来轻松创建 MailMessage。

  • 首先,创建一个新的 HtmlLoadOptions 对象。
  • 设置一个包含图像路径的字符串到 PathToResources
  • 如果 EML 应包含带有纯文本的 AlternateView,则将 ShouldAddPlainTextView 属性设置为 true。
  • 通过加载 HTML 文件并将 HtmlLoadOptions 对象作为参数传递,创建一个 MailMessage 对象。
  • 设置其他消息属性。
  • 最后,使用 Save 方法将 MailMessage 对象保存到 EML 文件中。
var htmlloadOptions = new HtmlLoadOptions
{
PathToResources = path,
ShouldAddPlainTextView = true
};
var eml = MailMessage.Load(path + @"content.html", htmlloadOptions);
// Set sender and recipient
eml.From = new MailAddress("sender@domain.com");
eml.To = new MailAddress("recipient@domain.com");
// Set subject
eml.Subject = "New message from HTML";
// Save the message in EML format
eml.Save("message_from_html.eml", SaveOptions.DefaultEml);

改善 HTML 消息在 Outlook 中显示的提示

要在 Outlook 中查看您的 HTML 消息,您需要确保其代码与 Outlook 渲染引擎兼容,这与大多数网页浏览器不同。可能影响您 HTML 电子邮件在 Outlook 中显示的一些常见问题包括:

  • Outlook 不支持某些标签和 CSS 属性,例如背景图像、浮动、边距、填充等。您可能需要使用内联样式、表格或条件注释来实现所需的布局和格式。
  • Outlook 可能会在元素之间添加额外的空格或行,或完全删除某些元素。您可能需要使用不间断空格、零宽空格或空表格单元格来防止这种情况。
  • Outlook 可能会更改 HTML 文件的编码或字符集,这可能导致某些字符显示不正确。您可能需要在其中使用元标签指定编码和字符集。

结论

在这篇博客文章中,您学习了如何使用 Aspose.Email 在 C# 中以编程方式创建 MIME 消息。逐步教程和代码示例展示了如何从头开始和从 HTML 文件创建 eml 文件,向电子邮件消息的 HTML 内容添加图像,并提供了有用的提示,以改善您的 HTML 消息在 Outlook 中的显示。

  • 您可以进一步了解 Aspose.Email for .NET 并免费试用。
  • 您还可以查看 文档 中关于 Aspose.Email 的更多功能和功能。
  • 欢迎您在我们的 论坛 上提出问题。

另请参见