Caché インターネット・ユーティリティの使用法
MIME メッセージの作成、記述および読み取り
[Home] [Back] [Next]
InterSystems: The power behind what matters   
Class Reference   
Search:    

Caché では、マルチパート MIME メッセージの作成に使用できるクラス (%Net.MIMEPart) を提供します。SOAP メッセージに追加する添付を作成するには、このクラスを使用します。Caché での Web サービスおよび Web クライアントの作成 を参照してください。MIME は一般的な標準なので、電子メールの処理や HTTP マルチパート POST など、他にも多くのアプリケーションが考えられます。

以下の項目について説明します。
MIME メッセージの概要
MIME 形式のドキュメントは、MIME パートと呼ばれます。各 MIME パートにはヘッダがあり、メッセージ本文 (テキストまたはバイナリのいずれか)、または追加 MIME パートが含まれます。MIME-Version ヘッダを持つ MIME パートは、トップレベル・ドキュメントとして使用でき、MIME メッセージと呼ばれます。次の図に例を示します。
この例で、E と F には、表示されない追加サブパートがあります。
MIME パートを表示するには、ヘッダおよびこのパートのコンテンツの設定に使用するプロパティを提供する %Net.MIMEPart クラスを使用します。
MIME パートの作成
MIME パートを作成する手順は以下のとおりです。
  1. %Net.MIMEPart のインスタンスを作成します。
  2. 以下のいずれかを行います。
  3. オプションで、MIME パート・ヘッダの設定と取得 の説明に従って、ヘッダを設定します。
MIME パート・ヘッダの設定と取得
HTTP ヘッダの値を設定および取得できます。%Net.MIMEPart の以下のプロパティが MIME ヘッダに影響します。
%Net.MIMEPart クラスは、MIME ヘッダの管理に使用できる一般的なメソッドを提供します。
完全なメソッド・シグニチャおよびその他の詳細は、%Net.MIMEPart のクラス・ドキュメントを参照してください。
オプションのメッセージ範囲の値を指定
既定では、メッセージ範囲は、自動的に生成されます。必要に応じて、メッセージの範囲を指定できます。そのためには、Boundary プロパティの値を指定します。どのメッセージ・パートでも使用される可能性が極めて低い文字列を使用するようにしてください。
MIME メッセージの記述
MIME メッセージを記述するには、以下のように %Net.MIMEWriter を使用します。
  1. %Net.MIMEWriter クラスのインスタンスを作成します。
  2. オプションで、出力先を指定します。出力先を指定するには、ライター・インスタンスの OutputToDevice() (既定)、OutputToFile()、または OutputToStream() のメソッドのいずれかを使用します。
  3. 必要に応じて、ライターのメソッドを呼び出して、出力を記述します。
    シングルパートのメッセージの場合、WriteMIMEBody() および WriteMIMEMessage() は、同じ出力を生成します。
完全なメソッド・シグニチャおよびその他の詳細は、%Net.MIMEPart のクラス・ドキュメントを参照してください。
例 : WriteMIMEMessage()
以下の例は、WriteMIMEMessage() の使用法を示しています。
ClassMethod WriteMIMEMessage(text As %String,header as %String) as %Status
{
 Set msg=##class(%Net.MIMEPart).%New()
 Set msg.Body=##class(%GlobalCharacterStream).%New()
 Do msg.Body.Write(text)
 
 //specify some headers
 Set msg.ContentType="text/html"
 Set msg.ContentCharset="us-ascii"
 Do msg.SetHeader("Custom-header",header)
 
 //create MIME writer; write MIME message
 Set writer=##class(%Net.MIMEWriter).%New()
 Set status=writer.WriteMIMEMessage(msg)
 
 If $$$ISERR(status) do $system.Status.DisplayError(status)
 Quit $$$OK
}
以下のターミナル・セッションでは、このメソッドが使用されています。
GNET> Set text = "message text"
 
GNET> Set header="my header value"
 
GNET> Do ##class(GNET.MIME).WriteMIMEMessage(text,header)
CONTENT-TYPE: text/html
Custom-header: my header value
 
message text
 
GNET>
MIME メッセージの読み取り
MIME メッセージを読み取るには、以下のように %Net.MIMEReader を使用します。
  1. %Net.MIMEReader クラスのインスタンスを作成します。
  2. 入力のソースを指定します。入力のソースを指定するには、リーダ・インスタンスの OpenFile() メソッドまたは OpenStream() メソッドを使用します。
  3. リーダ・インスタンスの ReadMIMEMessage() メソッドを呼び出します。このメソッドは、最初の引数として %Net.MIMEPart のインスタンスを参照によって返します。これはステータスを返すので、それを確認する必要があります。
完全なメソッド・シグニチャおよびその他の詳細は、%Net.MIMEPart のクラス・ドキュメントを参照してください。