電信八号初心者講座・使い方・その1でメールを書くためにエディタを起動した時、
こういう文章が既に書かれた状態で起動したと思います。これは、毎回同じことを書かなくてもすむように、メールの雛型として電信八号が用意してくれるものです。もちろん、これはテンプレートファイルというものをエディタで編集することで、自由に変更ができます。また電信八号では、メールの送り先によって使う雛型を自動的に変えることもできるのです。ここでは、その設定の仕方を説明しようと思います。
テンプレート定義ファイルの設定
…テンプレートファイルの書き方を説明する前に、テンプレート定義ファイルの説明をしましょう。テンプレート定義ファイルは、メールを新しく書いたり返信したり転送したりする時に、どのテンプレートファイルを雛型にしてエディタを起動するのかを指定するファイルのことです。これにより、送る宛先等によってテンプレートファイルを自動的に切りかえることが可能になります。
を押して「設定」ウィンドウを出し、左のリストから「フォルダ」を選択してください。
そして変更したいテンプレート定義ファイルの欄の右にある「編集」ボタンを押してください。「送信テンプレート定義ファイル」はメールを新規作成する際に、「返信テンプレート定義ファイル」は返信の際に、「転送テンプレート定義ファイル」は転送の際に使われるテンプレート定義ファイルです。
するとこのようなウインドウが出てテンプレート定義ファイルが編集できるようになります(違うプログラムが起動してしまう時等は、電信八号を終了させてからエディタで直接目的のファイルを編集して下さい)。
そうしたら、次に、どんなメールにどのテンプレートを使うかを書いていきます。書式は、電信八号初心者講座・メールの振り分けで説明されたフォルダ定義ファイルと同じで、
/(正規表現)/(半角スペースまたはタブ)(使用するテンプレートファイル名)(改行)
です。作成される(または返信や転送される元の)メールのヘッダがテンプレート定義ファイルに書かれた条件に合致した時に、その右に書かれたテンプレートファイルが雛型として使われる、という仕組みです(なお、「編集」ボタンを押して編集を行っている場合は、TabキーはTabを入れる役割をしてくれません。半角スペースを使うようにして下さい)。複数条件がある場合は上から調べられていきますから書く順序にも注意が必要です。
例えば、送信テンプレート定義ファイル(メールの新規作成の時に使われるテンプレートを指定するファイル)に
/TO:.*hoge@boo.hoo.woo/ send.cmp
と書かれていた場合、住所録で宛先にhoge@boo.hoo.wooを指定してメールを作成した場合にsend.cmpのファイルがテンプレートファイルとして使用されるようになります。
(使用するテンプレートファイル名)には、c:\den8\send.cmpのような絶対パスが使えます。相対パスも使えますが、その場合の基本となるフォルダはDenshin8.exeがあるフォルダになります。よって、上の例のように名前だけの場合は、Denshin8.exeがあるフォルダと同じフォルダに存在しているファイルだとみなされます。
ここで注意して欲しいのは返信と転送のテンプレート定義ファイルです。ここに書く正規表現は、返信元、転送元のフィールドがどうなっているかというものです。From: hoge <hoge@boo.hoo.woo>のフィールドを持つメールを返信する際に使うテンプレートを指定する時には、/FROM:.*hoge@boo.hoo.woo/等とします。返信の時にはFromフィールドに書かれていたアドレスがToフィールドになるからといって、/TO:.*hoge@boo.hoo.woo/等としてはいけません。
色々定義を書いたら、最後の行に、
/.*/ send.cmpのように記述して、かならずどれかのテンプレートが選択されるようにしましょう。そうしないとテンプレート定義ファイルに書かれた条件全てに合致しないものがきた時に、電信八号が困ってしまいます。
新しいファイルを作ってそれをテンプレート定義ファイルとして指定することもできます。その場合、ファイルの拡張子は.defとしてください。ファイルができあがったら指定する定義ファイルの欄にそのファイル名を書きこめばOKです。ここも絶対パスを使った方が無難です。ファイル名のみが使われた場合はDenshin8.exeがあるフォルダと同じフォルダにあるとみなされます。
テンプレートファイルの書き方
テンプレート定義ファイルが書かれても、テンプレートファイルがなければなにもなりません。ではテンプレートファイルの書き方を説明していきましょう。
テンプレートファイルは、拡張子が.cmpとなっています(違う拡張子であってもテンプレート定義ファイルできちんと指定してあれば動きますが、テンプレートファイルの拡張子は.cmpにすることをお勧めします)。まずテンプレート定義ファイルで指定されたファイルを作成しましょう。すでにあるファイルをテンプレート定義ファイルで指定していた場合はそのままでもちろん構いません。
そうしたらエディタでそのファイルを開いて編集します。テンプレートは電信八号が扱うメールの形式に則らなければならない(インターネットメールの形式+ヘッダと本文を--------で区切る)ので、初めは最初からある、send.cmp(送信テンプレート定義ファイルから呼び出される)やreply.cmp(返信テンプレート定義ファイルから呼び出される)、forward.cmp(転送テンプレート定義ファイルから呼び出される)を下敷きとして使うことをお勧めします。とりあえず、send.cmpとreply.cmpを例に挙げて説明しましょう。
まずはsend.cmpから。
$で始まる単語は、変数を意味します。新しくメールが作られるたびに、電信八号がその変数が表す文字列に置き換えてくれるものです。$FROMは「サーバー別の設定」で設定した実名とメールアドレスによって作られる文字列に、$TO、$CC、$BCCは住所録で指定されたアドレスに(それがなければ空欄に)、$SUBJECTは住所録で指定された文字に置き換えられます(これについてもなければ空欄です)。なお、$の後は大文字です。小文字は許されないので注意して下さい。
変数には、後ろに[]をつけることができます。その場合、[]の中に書かれた整数個目の単語に置き換えられます。例えば、$FROMがhoge <hoge@boo.hoo.woo> (ほげほげ)だった場合、$FROM[1]はhogeに、$FROM[2]は<hoge@boo.hoo.woo>に、$FROM[3]は(ほげほげ)になります。また、[1-10]等と書くことにより、1個目〜10個目の単語、というように指定することもできます。電信八号は半角スペースで区切られたものを単語とみなしますので、ho ge ho geは4つの単語であると解釈されます。ただし、""で囲まれたものはひとつの単語とみなされます。すなわち、$FROMが"ho ge ho ge" <hoge@boo.hoo.woo>だった場合、$FROM[1]はho ge ho geとなります(""は取り去られます)。
送信テンプレートファイルで使われる$BODYについては電信八号のヘルプを参照してください。HTMLとの連携で必要になるというものですので、気にしなくても構いません。
$INCLUDE<>($INCLUDEと<>の間にはスペースを入れないようにしてください)は、<>で囲まれたファイルに置きかえられます。ファイルには絶対パスも使うことができます。ちなみにPRIVATE.SIGをメモ帳で開いてみると…。
…となっています。だから最初にメールを作成した時にああいう文字が書かれたものになったわけです。下に住所録では何も入力しないときのメールを置いておきますので、参考にしてください。仕組みがわかったでしょうか。
送信テンプレートファイルでは、変数は$TO、$CC、$BCC、$FROM、$SUBJECT、$BODY、$INCLUDE<>が使えます。
では次に、reply.cmpです。
$RECOMMENDED-で始まる変数は、電信八号が推奨する文字列に置き換えてくれるものです。例えば$RECOMMENDED-TOは、返信元のメールにReply-Toフィールドがあればそのアドレスに、それがなければ返信元のメールのFromフィールドに書いてあるアドレスが使われます。
$BODYは元のメール本文を(送信テンプレートファイルにおける$BODYとは意味が変わっているので注意してください)、$QUOTED-BODYは元のメール本文各行の先頭に、「設定」ウィンドウで設定された引用文字列が付加されたものを指します。この2つの変数についた[]は例外で、[]の中に書かれた整数行を表します。$BODY[1-1000]ならば本文の1行目から1000行目になるわけです。
返信テンプレートファイルでは、送信テンプレートで使えた変数($TO、$CC、$BCC、$FROM、$SUBJECT、$INCLUDE<>)に加え、$RECOMMENDED-FROM、$RECOMMENDED-TO、$RECOMMENDED-CC、$RECOMMENDED-IN-REPLY-TO、$REFERENCES、$MESSAGE-ID、$RECOMMENDED-SUBJECT、$ORIGINAL-SUBJECT、$BODY、$QUOTED-BODY、さらに元のメールの全てのヘッダが使えます。以下、少し解説します。
$TO、$CC、$FROM、$SUBJECT、$BODYは全て返信元メールのものを指します。よって例えば$TOは自分のアドレス、$FROMはメールを送ってきた相手のアドレスになります。一方、$RECOMMENDED-FROMなど$RECOMMENDED-がつくものは、これから作成する返信メールのヘッダーフィールドを指すものなので(例えばRECOMMENDED-TOは作成する返信メールのTOフィールドにふさわしい文字列という意味)、混乱しないように注意して下さい。
$BCCは…受信したメールにはこのフィールドはないはずですから返信テンプレートファイルでは意味がないですね。
$RECOMMENDED-IN-REPLY-TOと$MESSAGE-IDについて
In-Reply-ToフィールドとReferencesフィールドは、このメールがどのメールに対する返信なのかを指し示すフィールドです。これはメール同士の関係を整理するのに役に立ちます。電信八号で、受信したメールを選択し、メニューから「フォルダ」→「スレッドの表示」を選んでみてください。新しいウインドウが出たと思います。これはどのメールがどのメールに対する返信かをツリー状にして表したものです(ただし同じフォルダにあるメールの関係しか示しません。よって受信したメールの返信をしても、その場合はOUT.fldなど受信したメールがあるフォルダとは別のフォルダに返信したメールがあるのでツリー表示にはなりません。この機能は主にメーリングリストで威力を発揮します)。このスレッド表示をするためにメーラーが使うのがIn-Reply-ToフィールドとReferencesフィールド、そしてMessage-IDフィールドです。というわけなので、返信メールにはIn-Reply-ToフィールドとReferencesフィールドを書くようにしましょう。具体的には、
In-Reply-To: $RECOMMENDED-IN-REPLY-TO References: $REFERENCES (タブ)$MESSAGE-ID
と書けばよいです。$MESSAGE-IDの前にはタブ(あるいは1つ以上の半角スペース)を入れることを忘れないようにして下さい。ヘッダーフィールドは2行以上になってはいけない(1つのヘッダーを2行に分けてはいけない)というのが原則なのですが、「半角スペースやタブの直前には改行を入れて1つのヘッダーを2行以上にわけることができる」というルールがあるのでこういう記述が可能になっています。とりあえずは例外的な書き方であると考えてください。
$MESSAGE-IDは返信元のメールのMessage-IDフィールドを指します。Message-IDフィールドは、メールを中継するサーバーか、もしくはメーラーが付けるヘッダーフィールドで、メール同士の区別のために、他のどのメールとも違う文字列がつけられます。これにより、メーラー等はメールの区別をします。
$SUBJECTと$RECOMMENDED-SUBJECTと$ORIGINAL-SUBJECTの違い
例えば、返信元のSubjectフィールドが、Re: hogehoge
だったとすると、テンプレートファイルに記述された$SUBJECT、$RECOMMENDED-SUBJECT、$ORIGINAL-SUBJECTは次のようになります。
$SUBJECT → Re: hogehoge
$RECOMMENDED-SUBJECT → Re^2: hogehoge
$ORIGINAL-SUBJECT → hogehoge
ちなみに、"Re^2: hogehoge"や"Re: Re: hogehoge"などの書き方は英語として見ると誤りで、こういう書き方を嫌う人もいるので、返信テンプレートのSubjectフィールドは
Subject: Re: $ORIGINAL-SUBJECT
とするのが無難でしょう。
返信元のメールのヘッダを使う場合、そのフィールドネームを全て大文字にして指定すればOKです。例えば、返信元のメールのX-Mailerフィールドを使おうと思った場合、$X-MAILERと指定します。
どうでしょうか。転送テンプレートファイルは返信テンプレートファイルと同じ書き方でいいと思います。これを参考に、テンプレートファイルを作ってみてください。