在 C++ 中發送 Outlook 電子郵件

上一篇文章 中,您了解瞭如何使用 C++ 以編程方式創建 MS Outlook 電子郵件,包括 MSGEMLEMLX。在本文中,您將了解如何從 C++ 應用程序中發送 Outlook 電子郵件。電子郵件可以在運行時創建或從已保存的電子郵件文件(如 .msg、.emlx 等)加載。

使用 C++ 電子郵件庫發送電子郵件 - 免費下載

上一篇 類似,我們將使用 Aspose.Email for C++ 發送 Outlook 電子郵件。您可以從 下載 部分下載庫文件或使用 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 類的實例並指定收件人、發件人、主題和消息
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 使用 Transport Neutral Encapsulation Format (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++ 電子郵件庫的更多信息。

也可以看看