C++でOutlookメールを送信する

前の記事では、C++を使用して、MSGEMLEMLXなどのMSOutlook電子メールをプログラムで作成する方法を説明しました。この投稿では、C++アプリケーション内からOutlook電子メールを送信する方法を学習します。電子メールは、ランタイムで作成することも、.msg、.emlxなどのすでに保存されている電子メールファイルからロードすることもできます。

C++電子メールライブラリで電子メールを送信-無料ダウンロード

前の投稿と同様に、Aspose.Email for C++を使用してOutlookの電子メールを送信します。ライブラリファイルは、ダウンロードセクションからダウンロードするか、NuGetを使用してインストールできます。

C++を使用してOutlookの電子メールを送信する

以下は、Aspose.Email for C++を使用してSMTPクライアントでOutlook電子メールを送信する手順です。

  • Outlook電子メールを作成するか、MailMessageクラスを使用してファイルからロードします。
  • SmtpClientのオブジェクトを作成します。
  • ホスト、ユーザー名、パスワード、およびポート番号を設定します。
  • セキュリティオプションを設定します。
  • SmtpClient->Send()メソッドを使用して電子メールを送信します。

次のコードサンプルは、C++を使用してOutlook電子メールを送信する方法を示しています。

// 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受信者の追加と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));

// メーリングホストサーバー、ユーザー名、パスワード、ポート番号、セキュリティオプションを指定します
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>();

// FromおよびToフィールド
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クラスのインスタンスを作成し、To、From、Subject、およびMessageを指定します
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)メソッドを使用できます。

次のコードサンプルは、C++を使用してOutlook電子メールをTNEFとして送信する方法を示しています。

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)
{
// 例外をキャッチ
}

結論

この投稿では、C++を使用してOutlookの電子メールを送信する方法を見てきました。さらに、大量の電子メールを送信する方法、別のビューで電子メールを送信する方法、またはC++アプリケーション内でTNEFとして電子メールを送信する方法を理解するようになりました。 ドキュメントを使用して、AsposeのC++電子メールライブラリについて詳しく調べることができます。

関連項目