Создание и настройка содержимого электронной почты в C++ и отправка электронной почты с помощью SmtpClient

Создание нового сообщения электронной почты

Класс MailMessage представляет собой сообщение электронной почты и позволяет разработчикам создавать новое сообщение электронной почты. Основные свойства электронной почты, такие как От, Кому, Тема и тело, могут быть легко прикреплены к вновь созданному почтовому сообщению. Аналогично, мы можем сохранить почтовое сообщение в различных форматах, таких как EML, MSG и MHTML.

Шаги: Создание нового сообщения электронной почты в C#

  • Создайте экземпляр класса MailMessage.
  • Установите свойства почтового сообщения.
  • Сохраните почтовое сообщение в различных форматах.
  • Создайте экземпляр класса SmtpClient и отправьте электронное письмо с помощью метода Send.

Следующий кодовый фрагмент C++ показывает, как создать новое электронное письмо с различными свойствами.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Email();
// Create a new instance of MailMessage class
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
// Set subject of the message, Html body and sender information
message->set_Subject(L"New message created by Aspose.Email for .NET");
message->set_HtmlBody(System::String(L"<b>This line is in bold.</b> <br/> <br/>") + L"<font color=blue>This line is in blue color</font>");
message->set_From(System::MakeObject<MailAddress>(L"from@domain.com", L"Sender Name", false));
// Add TO recipients and 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));
message->get_CC()->Add(System::MakeObject<MailAddress>(L"cc2@domain.com", L"Recipient 4", false));
// Save message in EML, EMLX, MSG and MHTML formats
message->Save(dataDir + L"CreateNewMailMessage_out.eml", SaveOptions::get_DefaultEml());
message->Save(dataDir + L"CreateNewMailMessage_out.emlx", SaveOptions::CreateSaveOptions(MailMessageSaveType::get_EmlxFormat()));
message->Save(dataDir + L"CreateNewMailMessage_out.msg", SaveOptions::get_DefaultMsgUnicode());
message->Save(dataDir + L"CreateNewMailMessage_out.mhtml", SaveOptions::get_DefaultMhtml());

Изменение адресов электронной почты на дружелюбные имена

Программные примеры, приведенные ниже, демонстрируют, как изменить адреса электронной почты на дружелюбные имена в сообщении электронной почты. Дружелюбное имя — это имя, которое более удобно для человека, чем адрес электронной почты, например, Джон Смит вместо js346@domain.com. При отправке электронной почты мы можем ассоциировать дружелюбное имя с адресом электронной почты в конструкторе класса MailMessage.

Чтобы изменить адреса электронной почты на дружелюбные имена в сообщении электронной почты, выполните следующие шаги:

  • Создайте экземпляр класса MailMessage и укажите адреса электронной почты в полях Кому и От вместе с дружелюбными именами.
  • Укажите адреса электронной почты Cc и Bcc вместе с дружелюбными именами, вызвав конструктор класса MailMessage в экземпляре MailMessage.
  • Создайте экземпляр класса SmtpClient и отправьте электронную почту с помощью метода Send.

Следующий кодовый фрагмент показывает, как отобразить имена для адресов электронной почты.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::String dataDir = RunExamples::GetDataDir_Email();
System::SharedPtr<MailMessage> message = MailMessage::Load(dataDir + L"test.eml");
// A To address with a friendly name can also be specified like this
message->get_To()->Add(System::MakeObject<MailAddress>(L"kyle@to.com", L"Kyle Huang"));
// Specify Cc and Bcc email address along with a friendly name
message->get_CC()->Add(System::MakeObject<MailAddress>(L"guangzhou@cc.com", L"Guangzhou Team"));
message->get_Bcc()->Add(System::MakeObject<MailAddress>(L"ahaq@bcc.com", L"Ammad ulHaq "));
message->Save(dataDir + L"MessageWithFrienlyName_out.eml", SaveOptions::get_DefaultEml());

Установка тела письма

Класс MailMessage представляет собой сообщение электронной почты. Экземпляры класса MailMessage используются для создания сообщений электронной почты, которые передаются на SMTP-сервер для доставки с использованием класса SmtpClient. Тело письма можно задать с помощью класса MailMessage. У электронной почты может быть несколько тел. В классе MailMessage есть два типа тел:

  • HTML-тело
  • Текстовое тело

Кроме HtmlBody и TextBody, Aspose.Email имеет еще два свойства только для чтения, относящихся к телу письма:

  • IsBodyText: сообщает пользователю, является ли тело текстовым.
  • IsBodyHtml: сообщает пользователю, является ли тело HTML или обычным текстом.

Эта статья показывает, как определить текст обыкновенного текста или HTML, установить альтернативный текст и закодировать тело электронной почты.

Установка HTML-тела

HtmlBody используется для указания HTML-содержимого тела сообщения. HtmlBody должен быть заключен между тегами . Следующий кодовый фрагмент показывает, как установить HTML-тело.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Declare message as MailMessage instance
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
// Specify HtmlBody
message->set_HtmlBody(L"<html><body>This is the HTML body</body></html>");

Установка альтернативного текста

Используйте класс AlternateView для указания копий сообщения электронной почты в другом формате. Например, если вы отправляете сообщение в HTML, вы также можете предоставить версию в обычном тексте на случай, если некоторые из получателей используют почтовые клиенты, которые не могут отображать HTML-контент. Этот класс имеет два свойства, LinkedResources и BaseUri, которые используются для разрешения URL-адресов в содержимом электронной почты.

  • LinkedResources — это коллекция объектов LinkedResources. При рендеринге URL-адреса в содержимом электронной почты сначала сопоставляются с URL-адресами в ссылке на содержимое каждого объекта LinkedResources в коллекции LinkedResources и разрешаются.
  • BaseUri используется почтовым читателем для разрешения относительных URL-адресов в теле, а также для разрешения относительных URL-адресов ссылок на содержимое в коллекции LinkedResources.

Следующий кодовый фрагмент C++ показывает, как установить альтернативный текст.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// Declare message as MailMessage instance
System::SharedPtr<MailMessage> message = System::MakeObject<MailMessage>();
// Creates AlternateView to view an email message using the content specified in the //string
System::SharedPtr<AlternateView> alternate = AlternateView::CreateAlternateViewFromString(L"Alternate Text");
// Adding alternate text
message->get_AlternateViews()->Add(alternate);