在 C++ 中发送 Outlook 电子邮件

上一篇文章 中,您已经了解了如何使用 C++ 以编程方式创建 MS Outlook 电子邮件,包括 MSGEMLEMLX。在这篇文章中,您将了解如何从 C++ 应用程序中发送 Outlook 电子邮件。电子邮件可以在运行时创建或从已保存的电子邮件文件(例如 .msg、.emlx 等)加载。

使用 C++ 电子邮件库发送电子邮件 - 免费下载

previous post 类似,我们将使用 Aspose.Email for C++ 发送 Outlook 电子邮件。您可以从 Downloads 部分下载库文件或使用 NuGet 安装它。

使用 C++ 发送 Outlook 电子邮件

以下是使用 Aspose.Email for C++ 使用 SMTP 客户端发送 Outlook 电子邮件的步骤。

  • 使用 MailMessage 类创建 Outlook 电子邮件或从文件加载它。
  • 创建 SmtpClient 的对象。
  • 设置主机、用户名、密码和端口号。
  • 设置安全选项。
  • 使用 SmtpClient->Send() 方法发送电子邮件。

以下代码示例展示了如何使用 C++ 发送 Outlook 电子邮件。

// 创建 MailMessage 类的新实例
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// 设置邮件主题、Html 正文和发件人信息
message->set_Subject(u"New message created by Aspose.Email for .NET");
message->set_From(System::MakeObject<MailAddress>(L"from@domain.com", L"Sender Name", false));
message->set_Body(System::String(u"<b>This line is in bold.</b> <br/> <br/>") + u"<font color=blue>This line is in blue color</font>");
message->set_BodyEncoding(System::Text::Encoding::get_ASCII());
// 添加收件人和添加抄送收件人
message->get_To()->Add(System::MakeObject<MailAddress>(L"to1@domain.com", L"Recipient 1", false));
message->get_To()->Add(System::MakeObject<MailAddress>(L"to2@domain.com", L"Recipient 2", false));
message->get_CC()->Add(System::MakeObject<MailAddress>(L"cc1@domain.com", L"Recipient 3", false));

// 指定您的邮件主机服务器、用户名、密码、端口号和安全选项
client->set_Host(u"mail.server.com");
client->set_Username(u"username");
client->set_Password(u"password");
client->set_Port(587);
client->set_SecurityOptions(Aspose::Email::Clients::SecurityOptions::SSLExplicit);

try
{
	// 发送此消息
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ 使用备用视图发送 Outlook 电子邮件

您还可以指定电子邮件的替代视图,以创建不同格式的邮件副本。例如,如果您的消息是 HTML 格式,您可以创建具有纯文本的替代视图。为了创建替代视图,您可以使用 MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")) 方法。

以下代码示例展示了如何使用 C++ 发送带有备用视图的电子邮件。

// 创建 MailMessage 类的实例
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// 从和到字段
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// 创建 AlternateView 的实例以使用字符串中指定的内容查看电子邮件消息
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// 添加替代文本
message->get_AlternateViews()->Add(alternate);

// 创建 SmtpClient 类的实例
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// 指定您的邮件主机服务器、用户名、邮件密码和端口号
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Client->Send 将发送此消息
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

使用 C++ 发送批量电子邮件

当您需要一次发送大量电子邮件时,可能会出现这种情况。对于这种情况,Aspose.Email for C++ 提供了 MailMessageCollection 类来封装多封电子邮件。以下是发送大量电子邮件的步骤。

  • 使用 MailMessage 类创建或加载电子邮件消息。
  • 创建 MailMessageCollection 类的对象。
  • 使用 MailMessageCollection->add() 方法将电子邮件消息添加到集合中。
  • 创建 SmtpClient 类的对象。
  • 使用 SmtpClient->Send(MailMessageCollection) 方法发送批量电子邮件。

以下代码示例展示了如何使用 C++ 发送大量电子邮件。

// 创建 SmtpClient 作为客户端并指定服务器、端口、用户名和密码
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

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

// 创建 MailMessageCollection 类的实例
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// 批量发送
try
{
	// 发送信息
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ 以 TNEF 形式发送电子邮件

MS Outlook 使用 传输中性封装格式 (TNEF) 发送具有 RTF 正文的电子邮件。在这种情况下,从电子邮件中提取格式并将其编码为 TNEF。在接收端,如果客户端支持 TNEF,它将纯文本和 TNEF 附件组合起来创建 RTF 电子邮件。否则,电子邮件将显示为纯文本。为了以 TNEF 发送电子邮件,您可以使用 SmtpClient->setUseTnef(bool) 方法。

以下代码示例展示了如何使用 C++ 将 Outlook 电子邮件作为 TNEF 发送。

try
{
// 电子邮件文件路径
System::String emlFileName = u"Message.eml";
// TNEF 电子邮件

// 从 eml 加载
System::SharedPtr<MailMessage> eml1 = MailMessage::Load(emlFileName, System::MakeObject<EmlLoadOptions>());
eml1->set_From(u"somename@gmail.com");
eml1->get_To()->Clear();
eml1->get_To()->Add(System::MakeObject<MailAddress>(u"first.last@test.com"));
eml1->set_Subject(u"With PreserveTnef flag during loading");
eml1->set_Date(System::DateTime::get_Now());
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"smtp.gmail.com", 587, u"somename", u"password");
client->set_SecurityOptions(Aspose::Email::Clients::SecurityOptions::Auto);
client->set_UseTnef(true);
// 使用此标志作为 TNEF 发送
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// 捕捉异常
}

结论

在这篇文章中,您已经了解了如何使用 C++ 发送 Outlook 电子邮件。此外,您已经了解如何在 C++ 应用程序中发送批量电子邮件、发送带有备用视图的电子邮件或以 TNEF 形式发送电子邮件。您可以使用 文档 探索更多关于 Aspose 的 C++ 电子邮件库的信息。

也可以看看