VMime Book 日本語訳 第6章 6-4

VMime Book 日本語訳 第6章 6-4
2020-07-01 K.OHWADA

原文
VMime Book: A Developer’s Guide To VMime
https://www.vmime.org/public/documentation/book/vmime-book.pdf

全体目次

第6章 メッセージングサービスの操作

Working with Messaging Services

6.4 トランスポートサービスの利用

 Using transport service

メッセージを送信するときにサービスにメッセージデータを提供するには、次の2つの可能性があります。

  • メッセージへの参照があり(タイプvmime :: message): send(msg)を呼び出すだけです。

  • または、生のメッセージデータ(文字列など)のみがあり: 追加のパラメーター(メッセージエンベロープに対応)を受け取るsend()の2番目のオーバーロードを呼び出す必要があります

次の例は、トランスポートサービスを使用して、2番目の方法を使用してメッセージを送信する方法を示しています。

リスト6.4:トランスポートサービスの使用
Using a transport service

const vmime: : string msgData =
”From: me@example.org \r\n”
”To: you@example.org \r\n”
”Date: Sun, Oct 30 2005 17:06:42 +0200 \r\n” ”Subject: Test \r\n”
”\r\n”
”Message body”;

// Create a new session
vmime:: utility :: url url(”smtp://example.com”);
vmime::shared ptr <vmime::net::session> sess = vmime::net::session::create();
// Create an instance of the transport service
vmime::shared ptr <vmime::net::transport> tr = sess−>getTransport(url); // Connect it
tr->connect();

// Send the message
vmime:: utility ::inputStreamStringAdapter is(msgData);
vmime::mailbox from("me@example.org"); 
vmime::mailboxList to;
to.appendMailbox(vmime::make shared <vmime::mailbox>("you@example.org"));

tr->send (
/∗ expeditor ∗/ from,
/∗ recipient(s) ∗/ to,
/∗ data ∗/ is,
/∗ total length ∗/ msgData.length());

// We have finished using the service
tr->disconnect();

注:
サービスを使用すると、いつでも例外がスローされる可能性があります。
わかりやすくするために、ここでは例外をキャッチしませんが、ユーザーにエラーフィードバックを提供するために、必ず独自のアプリケーションで例外をキャッチしてください。

SMTPを使用する場合は、セッションオブジェクトにいくつかのプロパティを設定することで認証を有効にできます(service :: setProperty()は、セッションにプロパティを設定するためのショートカットです。

正しいプレフィックス

tr−>setProperty(”options.need−authentication”, true); tr−>setProperty(”auth.username”, ”user”); tr−>setProperty(”auth.password”, ”password”);