Надсилайте електронні листи Outlook на C++

У попередній статті ви бачили, як програмно створювати електронні листи MS Outlook, зокрема MSG, EML і EMLX за допомогою C++. У цій публікації ви дізнаєтесь, як надсилати електронні листи Outlook із програм C++. Електронні листи можна створювати під час виконання або завантажувати з уже збережених файлів електронної пошти, таких як .msg, .emlx тощо.

Надсилайте електронні листи за допомогою бібліотеки електронної пошти C++ – безкоштовно завантажте

Подібно до попередньої публікації, ми використовуватимемо Aspose.Email for C++ для надсилання електронних листів Outlook. Ви можете завантажити файли бібліотеки з розділу Завантаження або встановити її за допомогою NuGet.

Надсилайте електронні листи Outlook за допомогою C++

Нижче наведено кроки для надсилання електронного листа Outlook за допомогою клієнта SMTP за допомогою Aspose.Email for C++.

  • Створіть електронний лист Outlook або завантажте його з файлу за допомогою класу MailMessage.
  • Створіть об’єкт SmtpClient.
  • Встановіть хост, ім’я користувача, пароль і номер порту.
  • Встановіть параметри безпеки.
  • Надіслати електронний лист за допомогою методу SmtpClient->Send().

У наведеному нижче прикладі коду показано, як надіслати електронний лист Outlook за допомогою C++.

// Створіть новий екземпляр класу 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());
// Додати одержувачів TO та Add CC recipients
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(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).

У наведеному нижче прикладі коду показано, як надіслати електронний лист Outlook як TNEF за допомогою C++.

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)
{
// виключення catch
}

Висновок

У цій публікації ви побачили, як надсилати електронні листи Outlook за допомогою C++. Крім того, ви дізналися, як масово надсилати електронні листи, надсилати електронні листи в альтернативному вигляді чи надсилати електронні листи як TNEF у програмах C++. Ви можете дізнатися більше про бібліотеку електронної пошти Aspose C++ за допомогою документації.

Дивись також