QMAIL 2.0(当マニュアルでは以下QMAIL2と表記)のマクロは単一の式からなります。
式とは
0以上の整数
例:
1
' 'で囲まれた文字列、もしくは、" "で囲まれた文字列
例:
'hogehoge', "fugafuga"
改行と<Tab>はエスケープ文字(\)を付けてそれぞれ'\n','\t'とします。
また ' と " を文字列として記述する場合はエスケープ文字を付けて \' , \" とし、
エスケープ文字自身を文字列として記述する場合は'\\'とします。
@から始まり()が後ろに続く名前
例:
@Seen(), @Address(...)
文字列
例:
Subject, To
尚、Receivedフィールドを参照した場合、複数のReceivedヘッダが存在するときには、
それぞれのフィールドを': 'で区切って返します。
変数では任意の型を扱えます。
参照する場合は変数名の前に'$'を付けて参照します。
数字で始る変数名は@Defun()以外では使用できません。
例:
$from, $val
グローバル変数が有効な範囲は以下の通りです。
・テンプレートの場合、テンプレート全体
・振り分けの場合、その振り分けの最中
・検索の場合、その検索の最中
変数を参照した場合、グローバル変数以外の変数が検索され、なければグローバ
ル変数を検索します。
式が返す値、関数の引数になる値の型は以下のとおりです。
・数値型 | : | 0以上の整数 |
・文字列型 | : | 文字列 |
・ブール型 | : | 真/偽 |
・フィールド型 | : | フィールド名 |
・アドレス型 | : | アドレスまたは名前のリスト |
・日付型 | : | 日付 |
・パート型 | : | パートのコンテンツ |
それぞれの型は、以下の型に変換可能です。
文字列型からの変換は、文字列を数値として評価します。
数値にならない文字列の場合、0になります。
ブール型からの変換は、真は1、偽は0になります。
フィールド型、アドレス型、日付型は、それを文字列型に変換してから、数値型に変換されます。
パート型からの変換は、パートが不正な場合は0、それ以外は1になります。
数値型からの変換は、その数値の文字列表現となります。
ブール型からの変換は、真は'true', 偽は'false'になります。
フィールド型は、そのフィールドの値です。
アドレス型は、そのアドレスの値です。
日付型は、'%Y4/%M0/%D %h:%m:%s'でフォーマットされた文字列となります。
パート型からの変換は、そのパートのコンテンツとなり、そのパートが不正な場合は空文字列になります。
数値型からの変換は、0なら偽、それ以外なら真です。
文字列型・パート型からの変換は、長さが0ならば偽、それ以外なら真です。
フィールド型からの変換は、そのフィールドが存在すれば真、なければ偽です。
アドレス型からの変換は、アドレスが一つもなければ偽、それ以外なら真です。
日付型からの変換は、常に真となります。
パート型からの変換は、パートが不正な場合には偽、それ以外の場合には真です。
以上のルールに従って関数の引数に渡される前に、必要な型に変換されます。
尚、パート型の説明においてパートが不正な場合というのは、存在しないパートを指定した場合です。
(例:パートが2つしかないメッセージに対して@Part(4)などとした場合)
コメント
マクロ中にコメントを挿入できます。
この場合、'#'をコメントの開始とし、以下改行までをコメントと見なします。