在 上一篇文章 中,您了解瞭如何使用 C++ 以編程方式創建 MS Outlook 電子郵件,包括 MSG、EML 和 EMLX。在本文中,您將了解如何從 C++ 應用程序中發送 Outlook 電子郵件。電子郵件可以在運行時創建或從已保存的電子郵件文件(如 .msg、.emlx 等)加載。
- C++ 電子郵件庫
- 在 C++ 中使用發送 Outlook 電子郵件
- 使用 C++ 以備用視圖發送 Outlook 電子郵件
- 使用 C++ 創建和發送批量電子郵件
- 使用 C++ 將電子郵件作為 TNEF 發送
使用 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++ 電子郵件庫的更多信息。