VMime Book 日本語訳 第4章 4.9
2020-07-01 K.OHWADA
原文
VMime Book: A Developer’s Guide To VMime
https://www.vmime.org/public/documentation/book/vmime-book.pdf
第4章 基本
Basics
ページ内 目次
4.9 エンコーディング
4.9.1 はじめに
4.9.2 エンコーダーの使用
4.9.3 利用可能なエンコーダーの列挙
4.9 エンコーディング
Encodings
4.9.1 はじめに
Introduction
MIME標準は、データをあるピアから別のピアに安全に送信できるように、特定の数のエンコーディングを定義しています。 VMimeは、vmime ::ユーティリティー::エンコーダー::エンコーダーオブジェクトを使用して、データのエンコードとデコードを提供します。
すべてのエンコード/デコードプロセスはライブラリによって内部的に処理されるため、エンコーダを直接使用する必要はありませんが、エンコーダが存在し、どのように機能するかを知っておくとよいでしょう。
4.9.2 エンコーダーの使用
Using encoders
エンコーダのインスタンスは、「vmime :: utility ::エンコーダ:: encoderFactory」オブジェクトを使用して、エンコーディング名(base64、quoted-printable、...)を指定して作成できます。
次の例では、Base64エンコーダーのインスタンスを作成して、一部のデータをエンコードします。
リスト4.15:エンコーダーを使用する簡単な例
A simple example of using an encoder
vmime::shared ptr <vmime:: utility ::encoder::encoder> enc = vmime:: utility ::encoder::encoderFactory::getInstance()−>create(”base64”); vmime:: string inString(”Some data to encode”); vmime::utility::inputStreamStringAdapter in(inString); vmime::string outString; vmime:: utility ::outputStreamStringAdapter out(outString); enc−>encode(in, out); std::cout << ”Encoded data is:” << outString << std::endl;
4.9.3 利用可能なエンコーダーの列挙
Enumerating available) encoders
エンコーダーの動作は、プロパティを使用して構成できます。ただし、すべてのエンコーダがプロパティをサポートしているわけではありません。
次のexample5は、使用可能なエンコーダーと、それぞれでサポートされているプロパティを列挙しています。
リスト4.16:エンコーダーとそのプロパティの列挙
Enumerating encoders and their properties
vmime::shared ptr <vmime::utility::encoder::encoderFactory> ef = vmime:: utility ::encoder::encoderFactory::getInstance(); std : : cout << ”Available encoders : ” << std : : endl ; for (int i = 0 ; i < ef−>getEncoderCount() ; ++i) { // Output encoder name vmime::shared ptr <const vmime:: utility ::encoder::encoderFactory::registeredEncoder> enc = ef−>getEncoderAt(i); std::cout<<” ∗”<<enc−>getName()<<std::endl; // Create an instance of the encoder to get its properties vmime::shared ptr <vmime::utility::encoder::encoder> e = enc−>create(); std::vector <vmime::string> props = e−>getAvailableProperties(); std::vector <vmime::string>::const iterator it; for (it = props.begin() ; it != props.end() ; ++it) std::cout << ” − ” << ∗it << std::endl;