VMime Book 日本語訳 第4章 4.3

VMime Book 日本語訳 第4章 4.3
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.3 基本オブジェクト
4.3.1 コンポーネントクラス
4.3.2 日時
4.3.3 メディアタイプ
4.3.4 メールボックスとメールボックスグループ

4.3 基本オブジェクト

Basic objects

4.3.1 コンポーネントクラス

The component class

VMimeでは、メッセージのすべてのコンポーネントは同じクラスコンポーネントから継承します。
これには、メッセージ自体(メッセージとbodyPartのクラス)、ヘッダー、ヘッダーフィールド、各ヘッダーフィールドの値、本文、およびメッセージ内のすべての部分が含まれます。
クラスコンポーネントは、これらすべてのコンポーネントを解析または生成するための共通のインターフェイスを提供します(メソッドparse()およびgenerate())。
また、解析プロセスまたは構造に関する情報を取得するための追加の関数も提供します(メソッドgetParsedOffset()、getParsedLength()、およびgetChildComponents())。 VMimeは、メッセージにある基本的なタイプに対応するクラスのセットも提供します。
たとえば、メールボックス、メールボックスリスト、日付/時刻情報、メディアタイプなどです。これらはすべて、コンポーネントからも継承されます。

4.3.2 日時

Date and time

日付と時刻は、VMimeのいくつかの場所、特にヘッダーフィールド(Date、Received、...)で使用されます。
VMimeは、RFC-2822の日付と時刻の仕様を完全にサポートしています。
オブジェクトvmime :: datetimeは、日付と時刻の情報を操作し、RFC-2822形式との間で解析/生成するために使用されます。
次のコードスニペットは、vmime :: datetimeオブジェクトを使用するさまざまな方法を示しています。

リスト4.4:vmime :: datetimeオブジェクトの使用 Using vmime::datetime object

// Creating from string in RFC−2822 format
vmime::datetime d1(”Sat, 08 Oct 2005 14:07:52 +0200”);
// Creating from components
vmime::datetime d2(
/∗ date ∗/ 2005, vmime::datetime::OCTOBER, 8, /∗ time ∗/ 14, 7, 52,
/∗ zone ∗/ vmime::datetime::GMT2);
// Getting day of week
const int dow = d2.getWeekDay(); // ’dow’ should be datetime::SATURDAY

4.3.3 メディアタイプ

Media type

MIMEでは、パーツに含まれるデータの性質は、メディアタイプを使用して識別されます。一般的なタイプ(例:画像)とサブタイプ(例:jpeg)を組み合わせて、メディアタイプ(例:image / jpeg)を形成します。
これは、MIMEタイプとも呼ばれます。
公式に登録されているメディアタイプは多数あり、ベンダー固有のタイプも可能です(「x-」で始まります(例:application / x-zip-compressed))。
VMimeでは、オブジェクトvmime :: mediaTypeはメディアタイプを表します。
vmime :: mediaTypes名前空間には、トップレベルのタイプとサブタイプの定数もいくつかあります。
たとえば、次の方法で新しいメディアタイプをインスタンス化できます。

vmime::mediaType theType(
/∗ top−level type ∗/ vmime::mediaTypes::IMAGE,
/∗ sub−type ∗/ vmime::mediaTypes::IMAGEJPEG);
// theType.getType() is ”image”
// theType.getSubType() is ”jpeg”
// theType.generate() returns ”image/jpeg”

メディアタイプの詳細については、RFC-2046を参照してください。
http://www.faqs.org/rfcs/rfc2046.html

4.3.4 メールボックスとメールボックスグループ

(Mailbox and mailbox groups

VMimeは、メールボックスとアドレスを操作するためのいくつかのオブジェクトを提供します。
vmime :: addressクラスは、アドレスを表すための抽象型です。メールボックス(タイプvmime :: mailbox)またはメールボックスグループ(タイプvmime :: mailboxGroup)のいずれかです。 メールボックスは、電子メールアドレス(必須)と場合によっては名前で構成されます。
メールボックスグループは、単にメールボックスの名前付きリストです。

図4.1:アドレス関連クラスの図
Diagram for address-related classes

f:id:ken_ohwada:20201229124049p:plain
アドレス関連クラスの図

図4.2:MIMEメッセージの全体的な構造 Overall structure of MIME messages

f:id:ken_ohwada:20201229124846p:plain
MIMEメッセージの全体的な構造

リスト4.5:メールボックスとメールボックスグループの使用
Using mailboxes and mailbox groups

vmime::shared ptr <vmime::mailbox> mbox1 = vmime::make shared <vmime::mailbox> (/∗ name ∗/ vmime::text(”John Doe”), /∗ email ∗/ ”john.doe@acme.com”); vmime::shared ptr <vmime::mailbox> mbox2 = vmime::make shared <vmime::mailbox>
(/∗ no name, email only ∗/ ”bill@acme.com”);
vmime::shared ptr <vmime::mailboxGroup> grp = vmime::make shared <vmime::mailboxGroup>();
 g r p −> a p p e n d M a i l b o x ( m b o x 1 ) ;
g r p −> a p p e n d M a i l b o x ( m b o x 2 ) ;