だいぶ前にメールにメモがつけたいを読んだときに、QMAIL3でもマクロを使えばできるかなと思っていたのですが、BTSでもそんな話が出てきたので試しに作ってみました。といっても、その過程でいくつか本体のバグが見つかって直したり、機能を追加したりしたので、r3198以降でないと動きません。
まず、メールボックスフォルダにmacroとmemoというディレクトリを作成します。そして、macroディレクトリにmemo.macroというファイル名で以下の内容のファイルを作成します。
@Progn(# メモのファイル名を取得します。
       @Defun('GetFileName',
              @Concat('memo/',
                      @RegexReplace(Message-Id,
                                    /[^A-Za-z0-9_.!@#$%^&-]/,
                                    '',
                                    @True()))),
       # メモを読み込んで返します。読み込めない場合には空文字列を返します。
       @Defun('LoadMemo',
              @If(@CanMemo(),
                  @Catch(@Load(@GetFileName()), ''),
                  '')),
       # メモを保存します。一番目の引数に保存するメモを指定します。
       @Defun('SaveMemo',
              @If(@CanMemo(),
                  @Save(@GetFileName(), $1),
                  @False())),
       # メモが取れるかどうか調べます。Message-Idが無いとメモは取れません。
       @Defun('CanMemo',
              Message-Id),
       # 入力ダイアログを開いてメモを入力し保存します。
       @Defun('InputMemo',
              @If(@CanMemo(),
                  @Catch(@SaveMemo(@InputBox('メモを入力してください',
                                             :INPUT-MULTILINE,
                                             @LoadMemo())),
                         @MessageBox('メモの保存に失敗しました')),
                  @MessageBox('Message-Idがないのでメモが取れません'))))
それからmenus.xmlを編集して適当なところにメニューを追加します。今回は、リストビューのコンテキストメニューに付けてみました。追加するのはこんな行です。
<menuitem text="Mem&o..."
          action="MessageMacro"
          param="@Progn(@Include('macro/memo.macro'), @InputMemo())"/>
さらにヘッダビューに表示するためにheader.xmlを編集します。最後の方にこんな感じでつけてみました。
<line hideIfEmpty="memo">
  <static width="auto" style="bold" showAlways="true">Memo:</static>
  <edit name="memo">{@Progn(@Include('macro/memo.macro'), @LoadMemo())}</edit>
</line>
リストビューのコンテキストメニューから[Memo...]を選ぶとダイアログが開くのでそこでメモを入力します。メモが付いているメッセージを開くと、ヘッダビューにそのメモが表示されます。メモは最初に作ったmemoディレクトリに保存されます。
問題点としては、
というのがありそうです。二番目の問題は、表示用テンプレートを使ってメッセージの下などに表示するという方法で回避できますが、今度はHTML表示と両立できないという問題が出てきます。
メモを付けると同時にユーザフラグを立てて、そのフラグの立っているメッセージの色を変えると、メモの付いているメッセージがすぐにわかって良いかも知れません。