Wysyłaj wiadomości e-mail programu Outlook w C++

W poprzednim artykule widziałeś, jak programowo tworzyć wiadomości e-mail MS Outlook, w tym MSG, EML i EMLX, używając C++. W tym poście dowiesz się, jak wysyłać wiadomości e-mail programu Outlook z poziomu aplikacji C++. Wiadomości e-mail można tworzyć w środowisku wykonawczym lub ładować z już zapisanych plików e-mail, takich jak .msg, .emlx itp.

Wysyłaj wiadomości e-mail za pomocą biblioteki poczty C++ — bezpłatne pobieranie

Podobnie jak w przypadku poprzedniego wpisu, do wysyłania wiadomości e-mail z programu Outlook użyjemy Aspose.Email for C++. Możesz pobrać pliki biblioteki z sekcji Downloads lub zainstalować ją za pomocą NuGet.

Wysyłaj wiadomości e-mail z programu Outlook przy użyciu języka C++

Poniżej przedstawiono kroki, aby wysłać wiadomość e-mail programu Outlook za pomocą klienta SMTP przy użyciu Aspose.Email for C++.

  • Utwórz wiadomość e-mail programu Outlook lub załaduj ją z pliku przy użyciu klasy MailMessage.
  • Utwórz obiekt SmtpClient.
  • Ustaw hosta, nazwę użytkownika, hasło i numer portu.
  • Ustaw opcje bezpieczeństwa.
  • Wyślij wiadomość e-mail za pomocą metody SmtpClient->Send().

Poniższy przykładowy kod pokazuje, jak wysłać wiadomość e-mail programu Outlook przy użyciu języka C++.

// Utwórz nową instancję klasy MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Ustaw temat wiadomości, treść HTML i informacje o nadawcy
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());
// Dodaj odbiorców DO i Dodaj odbiorców DW
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));

// Określ serwer hosta poczty, nazwę użytkownika, hasło, numer portu i opcję zabezpieczeń
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
{
	// Wyślij tę wiadomość
	client->Send(message);
}
catch (System::Exception& ex)
{

}

C++ Wysyłaj wiadomości e-mail programu Outlook z alternatywnym widokiem

Możesz także określić alternatywny widok wiadomości e-mail, aby utworzyć kopię wiadomości w innym formacie. Na przykład, jeśli wiadomość jest w formacie HTML, możesz utworzyć alternatywny widok zawierający zwykły tekst. Aby utworzyć alternatywny widok, możesz użyć metody MailMessage->getAlternateViews()->Add(AlternateView::CreateAlternateViewFromString(u"text")).

Poniższy przykładowy kod pokazuje, jak wysłać wiadomość e-mail z alternatywnym widokiem przy użyciu języka C++.

// Utwórz instancję klasy MailMessage
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();

// pola Od i Do
message->set_From(u"sender@sender.com");
message->get_To()->Add(u"receiver@receiver.com");

System::SharedPtr<AlternateView> alternate;

// Utwórz instancję AlternateView, aby wyświetlić wiadomość e-mail przy użyciu treści określonej w ciągu
alternate = AlternateView::CreateAlternateViewFromString(u"This is the alternate Text");

// Dodaj alternatywny tekst
message->get_AlternateViews()->Add(alternate);

// Utwórz instancję klasy SmtpClient
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>();

// Podaj serwer hosta poczty, nazwę użytkownika, hasło poczty i numer portu
client->set_Host(u"smtp.server.com");
client->set_Username(u"Username");
client->set_Password(u"Password");
client->set_Port(25);
try
{
	// Klient->Wyślij wyśle tę wiadomość
	client->Send(message);
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

Wysyłaj masowe wiadomości e-mail za pomocą C++

Może się zdarzyć, że będziesz musiał wysłać wiele e-maili naraz. W takich przypadkach Aspose.Email for C++ zapewnia klasę MailMessageCollection do enkapsulacji wielu wiadomości e-mail. Poniżej przedstawiono kroki, aby wysłać większość e-maili.

  • Twórz lub ładuj wiadomości e-mail za pomocą klasy MailMessage.
  • Utwórz obiekt klasy MailMessageCollection.
  • Dodaj wiadomości e-mail do kolekcji za pomocą metody MailMessageCollection->add().
  • Utwórz obiekt klasy SmtpClient.
  • Wysyłaj masowe wiadomości e-mail za pomocą metody SmtpClient->Send(MailMessageCollection).

Poniższy przykładowy kod pokazuje, jak wysyłać większość wiadomości e-mail przy użyciu języka C++.

// Utwórz SmtpClient jako klienta i określ serwer, port, nazwę użytkownika i hasło
System::SharedPtr<SmtpClient> client = System::MakeObject<SmtpClient>(u"mail.server.com", 25, u"Username", u"Password");

// Utwórz instancje klasy MailMessage i określ Do, Od, Temat i Wiadomość
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?");

// Utwórz instancję klasy MailMessageCollection
System::SharedPtr<MailMessageCollection> manyMsg = System::MakeObject<MailMessageCollection>();
manyMsg->Add(message1);
manyMsg->Add(message2);
manyMsg->Add(message3);

// Wysyłanie zbiorcze
try
{
	// Wysłać wiadomości
	client->Send(manyMsg); 
}
catch (System::Exception& ex)
{
	System::Diagnostics::Trace::WriteLine(System::ObjectExt::ToString(ex));
}

C++ Wysyłaj wiadomości e-mail jako TNEF

MS Outlook używa Transport Neutral Encapsulation Format (TNEF) do wysyłania e-maili zawierających treść RTF. W takim przypadku formatowanie jest pobierane z wiadomości e-mail i kodowane jako TNEF. Po stronie odbierającej, jeśli klient obsługuje format TNEF, składa zwykły tekst i załącznik TNEF w celu utworzenia wiadomości e-mail w formacie RTF. W przeciwnym razie wiadomość e-mail jest wyświetlana jako zwykły tekst. Aby wysyłać e-maile jako TNEF, możesz użyć metody SmtpClient->setUseTnef(bool).

Poniższy przykładowy kod pokazuje, jak wysłać wiadomość e-mail programu Outlook jako TNEF przy użyciu języka C++.

try
{
// Ścieżka pliku e-mail
System::String emlFileName = u"Message.eml";
// E-mail w formacie TNEF

// Załaduj z 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);
// Użyj tej flagi, aby wysłać jako TNEF
client->Send(eml1); 
}
catch (System::Exception& ex)
{
// złapać wyjątek
}

Wniosek

W tym poście widziałeś, jak wysyłać wiadomości e-mail z Outlooka za pomocą C++. Ponadto wiesz, jak wysyłać masowe wiadomości e-mail, wysyłać wiadomości e-mail z alternatywnym widokiem lub wysyłać wiadomości e-mail jako TNEF w aplikacjach C++. Możesz dowiedzieć się więcej o bibliotece e-mail C++ firmy Aspose, korzystając z dokumentacji.

Zobacz też