В предыдущей статье вы видели, как программно создавать сообщения электронной почты MS Outlook, включая MSG, EML и EMLX, используя C++. В этом посте вы узнаете, как отправлять электронные письма Outlook из приложений C++. Электронные письма можно создавать во время выполнения или загружать из уже сохраненных файлов электронной почты, таких как .msg, .emlx и т. д.
- Библиотека электронной почты C++
- Отправляйте электронные письма Outlook, используя C++
- Отправляйте электронные письма Outlook с альтернативным видом с помощью C++
- Создавайте и отправляйте массовые электронные письма с помощью C++
- Отправляйте электронные письма в формате TNEF с помощью C++
Отправляйте электронные письма с электронной библиотекой C++ — скачать бесплатно
Аналогично предыдущему сообщению, мы будем использовать Aspose.Email для C++ для отправки электронных писем Outlook. Вы можете загрузить файлы библиотеки из раздела Загрузки или установить ее с помощью NuGet.
Отправка электронных писем Outlook с помощью C++
Ниже приведены шаги для отправки электронной почты Outlook с помощью SMTP-клиента с использованием Aspose.Email для 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());
// Добавить получателей «Кому» и «Добавить получателей копии»
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 для 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));
}
С++ отправлять электронные письма как 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)
{
// поймать исключение
}
Вывод
В этом посте вы увидели, как отправлять электронные письма Outlook с помощью C++. Кроме того, вы узнали, как отправлять массовые электронные письма, отправлять электронные письма с альтернативным представлением или отправлять электронные письма в формате TNEF в приложениях C++. Вы можете узнать больше о библиотеке электронной почты Aspose C++, используя документацию.