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
図4.2:MIMEメッセージの全体的な構造 Overall structure of MIME messages
リスト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 ) ;