VMime Book 日本語訳 第4章 4.9

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;