Gửi email Outlook trong C++

Trong bài viết trước, bạn đã biết cách tạo email MS Outlook bao gồm MSG, EMLEMLX bằng lập trình bằng cách sử dụng C++. Trong bài đăng này, bạn sẽ tìm hiểu cách gửi email Outlook từ bên trong các ứng dụng C++. Các email có thể được tạo trong thời gian chạy hoặc được tải từ các tệp email đã lưu như .msg, .emlx, v.v.

Gửi Email với Thư viện Email C++ - Tải xuống Miễn phí

Tương tự như bài trước, chúng tôi sẽ sử dụng Aspose.Email for C++ để gửi email Outlook. Bạn có thể tải xuống các tệp thư viện từ phần Tải xuống hoặc cài đặt nó bằng NuGet.

Gửi email Outlook bằng C++

Sau đây là các bước để gửi email Outlook bằng ứng dụng khách SMTP bằng Aspose.Email for C++.

  • Tạo một email Outlook hoặc tải nó từ một tệp bằng lớp MailMessage.
  • Tạo một đối tượng SmtpClient.
  • Đặt máy chủ, tên người dùng, mật khẩu và số cổng.
  • Đặt tùy chọn bảo mật.
  • Gửi email bằng phương thức SmtpClient->Send().

Mẫu mã sau đây cho biết cách gửi email Outlook bằng C++.

// Tạo một thể hiện mới của lớp MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Đặt chủ đề của tin nhắn, nội dung Html và thông tin người gửi
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());
// Thêm người nhận TO và Thêm người nhận CC
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));

// Chỉ định máy chủ lưu trữ gửi thư, Tên người dùng, Mật khẩu, Cổng # và tùy chọn Bảo mật
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
{
	// Gửi tin nhắn này
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Gửi email Outlook với Chế độ xem thay thế

Bạn cũng có thể chỉ định một dạng xem thay thế của email để tạo một bản sao của thư ở định dạng khác. Chẳng hạn, nếu tin nhắn của bạn ở định dạng HTML, bạn có thể tạo một dạng xem thay thế có văn bản thuần túy. Để tạo chế độ xem thay thế, bạn có thể sử dụng phương thức MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")).

Mẫu mã sau đây cho biết cách gửi email với chế độ xem thay thế bằng C++.

// Tạo một thể hiện của lớp MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// Trường Từ và Đến
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Tạo một phiên bản của AlternateView để xem email bằng nội dung được chỉ định trong chuỗi
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// Thêm văn bản thay thế
message->get_AlternateViews()->Add(alternate);

// Tạo một thể hiện của Lớp SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Chỉ định máy chủ lưu trữ thư, tên người dùng, mật khẩu thư và Cổng #
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Client->Send sẽ gửi tin nhắn này
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Gửi email hàng loạt bằng C++

Có thể xảy ra trường hợp bạn cần gửi hàng loạt email cùng một lúc. Đối với những trường hợp như vậy, Aspose.Email for C++ cung cấp lớp MailMessageCollection để đóng gói nhiều thư email. Sau đây là các bước để gửi hàng loạt email.

  • Tạo hoặc tải thư điện tử bằng lớp MailMessage.
  • Tạo một đối tượng của lớp MailMessageCollection.
  • Thêm email vào bộ sưu tập bằng phương thức MailMessageCollection->add().
  • Tạo một đối tượng thuộc lớp SmtpClient.
  • Gửi email hàng loạt bằng phương thức SmtpClient->Send(MailMessageCollection).

Mẫu mã sau đây cho biết cách gửi số lượng lớn email bằng C++.

// Tạo SmtpClient làm ứng dụng khách và chỉ định máy chủ, cổng, tên người dùng và mật khẩu
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Tạo các phiên bản của lớp MailMessage và Chỉ định Đến, Từ, Chủ đề và Tin nhắn
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?");

// Tạo một thể hiện của lớp MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// gửi hàng loạt
try
{
	// gửi tin nhắn
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Gửi email dưới dạng TNEF

MS Outlook sử dụng Định dạng đóng gói trung tính truyền tải(TNEF) để gửi email có nội dung RTF. Trong trường hợp này, định dạng được trích xuất từ email và nó được mã hóa dưới dạng TNEF. Ở đầu nhận, nếu máy khách hỗ trợ TNEF, nó sẽ tập hợp văn bản thuần túy và tệp đính kèm TNEF để tạo email RTF. Nếu không, email sẽ được hiển thị dưới dạng văn bản thuần túy. Để gửi email dưới dạng TNEF, bạn có thể sử dụng phương thức SmtpClient->setUseTnef(bool).

Mẫu mã sau đây cho biết cách gửi email Outlook dưới dạng TNEF bằng C++.

try
{
// Đường dẫn tệp email
System::String emlFileName = u"Message.eml";
// Email TNEF

// Tải từ 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);
// Sử dụng cờ này để gửi dưới dạng TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// bắt ngoại lệ
}

Sự kết luận

Trong bài đăng này, bạn đã biết cách gửi email Outlook bằng C++. Ngoài ra, bạn đã biết cách gửi email hàng loạt, gửi email với chế độ xem thay thế hoặc gửi email dưới dạng TNEF trong các ứng dụng C++. Bạn có thể khám phá thêm về thư viện email C++ của Aspose bằng cách sử dụng tài liệu.

Xem thêm