在本博客中,您将学习如何使用 C# 创建 Outlook 电子邮件(包括 MSG、EML、EMLX 或 MHTML)。此外,我们将演示如何在 .NET 或 .NET Core 中使用 C# 同步或异步发送电子邮件。

C# 发送 Outlook 电子邮件

电子邮件已成为交换消息和共享文档、图像或其他类型文件等内容的主要来源。在与多个实体共享重要通知或文档的在线系统中,使用电子邮件的频率更高。在这种情况下,手动准备模板并向多个利益相关者发送电子邮件可能是一项耗时且繁忙的任务。

这里需要一个电子邮件自动化服务,您可以使用它无缝地创建和发送电子邮件。因此,在本文中,我将教您如何创建流行的 Outlook 格式的电子邮件,并以编程方式自动发送电子邮件的过程。阅读本文后,您将能够:

  • 在 C# 中创建和保存电子邮件,
  • 在 C# 中创建带有 HTML 正文的电子邮件,
  • 在 C# 中创建具有特定编码的电子邮件,
  • 在 C# 中使用 SMTP 同步发送电子邮件,
  • 在 C# 中使用 SMTP 异步发送电子邮件,
  • 并在 C# 中发送批量电子邮件。

用于创建和发送 Outlook 电子邮件的 C# API

为了自动化创建和发送电子邮件消息的过程,我们将使用 Aspose.Email for .NET 这是一个强大的电子邮件操作和处理 API。它支持流行的电子邮件格式,包括 MSG、EML/EMLX 等 MS Outlook 消息。您可以直接下载 API 的 DLL 或通过 NuGet 包管理器 或 Visual Studio 中的包管理器控制台安装它.

PM> Install-Package Aspose.Email

创建 C#(控制台、ASP.NET 等)应用程序并安装 Aspose.Email for .NET 后,您可以开始使用 C# 创建和发送电子邮件。

在 C# 中创建 Outlook 电子邮件

为了创建或操作 Outlook 电子邮件,Aspose.Email 提供了 MailMessage 类。此类让您可以设置电子邮件消息的所有属性(主题、收件人、发件人和正文),添加附件,并将消息保存为不同的电子邮件格式,例如 EML、MSG、MHTML 等。以下是创建步骤一封电子邮件:

  • 创建 MailMessage 类的实例。
  • 设置消息的属性。
  • 使用 MailMessage.Save() 方法保存电子邮件。

以下代码示例展示了如何在 C# 中创建和保存电子邮件。

// 创建 MailMessage 类的新实例
MailMessage message = new MailMessage();

// 设置邮件主题、正文和发件人信息
message.Subject = "New message created by Aspose.Email for .NET";
message.Body = "This is the body of the email.";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// 添加到收件人和抄送收件人
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// 添加附件
message.Attachments.Add(new Attachment("word.docx"));

// 以 EML、EMLX、MSG 和 MHTML 格式保存消息
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
message.Save("EmailMessage.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat));
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
message.Save("EmailMessage.mhtml", SaveOptions.DefaultMhtml);

在 C# 中创建带有 HTML 正文的 Outlook 电子邮件

HTML 标签用于使电子邮件的正文更有条理、更美观,并使用不同的元素(如表格、图像、列表等)丰富。如果您想创建具有 HTML 正文的电子邮件,您可以使用 MailMessage.HtmlBody 属性。以下代码示例展示了如何在 C# 中创建带有 HTML 正文的 Outlook 电子邮件。

// 创建 MailMessage 类的新实例
MailMessage message = new MailMessage();

// 设置邮件主题、Html 正文和发件人信息
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// 添加到收件人和抄送收件人
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// 以 EML/EMLX/MSG/MHTML 格式保存消息
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);

C# 创建具有特定编码的 Outlook 电子邮件

您还可以指定所需的编码标准,以告知浏览器或电子邮件应用程序如何解释电子邮件正文中的字符。 MailMessage.BodyEncoding 属性用于此目的。以下代码示例显示了在使用 C# 创建 Outlook 电子邮件时如何设置正文编码。

// 创建 MailMessage 类的新实例
MailMessage message = new MailMessage();

// 设置消息的主题、Html 正文、发送者和接收者信息
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));

// 指定编码 
message.BodyEncoding = Encoding.ASCII;

// 以 EML/EMLX/MSG/MHTML 格式保存消息
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);

在 C# 中同步或异步发送 Outlook 电子邮件

现在,一旦您创建了电子邮件,您可以将其同步或异步发送给收件人。 SmtpClient 类允许您使用 SMTP(简单邮件传输协议)发送 Outlook 电子邮件。以下是使用 Aspose.Email for .NET 在 C# 中发送电子邮件的步骤。

  • 使用 MailMessage 类创建或加载电子邮件消息。
  • 创建 SmtpClient 类的实例并设置主机、用户名、密码和端口号。
  • 分别使用 SmtpClient.SendSmtpClient.SendAsync 方法同步或异步发送电子邮件。

在 C# 中同步发送 Outlook 电子邮件

// 创建 MailMessage 实例。您可以创建新消息或加载已创建的消息文件(eml、msg 等)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// 创建 SmtpClient 类的实例
SmtpClient client = new SmtpClient();

// 指定您的邮件主机、用户名、密码、端口号和安全选项
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
	// 发送此电子邮件
	client.Send(msg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

在 C# 中异步发送 Outlook 电子邮件

// 创建 MailMessage 实例。您可以创建新消息或加载已创建的消息文件(eml、msg 等)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// 创建 SmtpClient 类的实例
SmtpClient client = new SmtpClient();

// 指定您的邮件主机、用户名、密码、端口号和安全选项
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;

// 指定您的邮件主机、用户名、密码、端口号和安全选项
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit; 

// 发送信息
client.SendAsync(msg);

Console.WriteLine("Sending message..."); 

msg.Dispose(); 

在 C# 中发送批量电子邮件

您还可以批量创建和发送电子邮件。 MailMessageCollection 类用于包含您要发送的电子邮件信息的集合。以下代码示例展示了如何在 C# 中发送批量电子邮件。

// 创建 SmtpClient 并指定服务器、端口、用户名和密码
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// 创建 MailMessage 类的实例并指定 To、From、Subject 和 Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

// 创建 MailMessageCollection 的实例并向其中添加电子邮件消息
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
 
try
{  
	// 发送信息
	client.Send(manyMsg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Aspose Email API for C# - 现场演示

结论

在本文中,您学习了如何在 C# 中创建 Outlook 电子邮件。此外,您还了解了如何在 .NET 应用程序中同步或异步发送电子邮件。您可以浏览 Aspose.Email for .NET 的 文档 以了解有关 API 的更多信息。

也可以看看

使用 C# 在 MS Exchange Server 上添加和更新收件箱规则在 Java 中添加和删除 MS Exchange 分发列表中的成员使用 C# 在电子邮件正文中发送 Word 文档
用 Java 在 MS Exchange Server 上添加和更新收件箱规则在 C# 中从 Microsoft Exchange Server 添加、更新和删除联系人在 Java 中从 Microsoft Exchange Server 添加、更新和删除联系人
在 C# 中添加和删除 MS Exchange 分发列表中的成员在 Python 中通过 SMTP 发送电子邮件