マクロで返信メールの元ファイル添付を参No.38834
うえむ さん 10/07/23 09:46
 
いつもおせわになっています。

返信メール作成時のエディタウィンドゥ上でのマクロ実行を考えています。やりたい
ことは、返信メールの元メールの添付ファイルを参照したいのです。

“HTMLメール”としてアイコンで添付されている場合、それをエディタで開いて内容
を作成中の返信メールに貼り付けたいと考えています。

マクロで実行可能な方法がありましたら教えてください。

[ ]
RE:38834 マクロで返信メールの元ファイルNo.38835
秀まるお2 さん 10/07/23 10:17
 
 「返信メール」コマンドで起動されたエディタ・ウィンドウ上で返信元メール
の添付ファイル類を参照するには、RootHeader関数を使えばいいです。

 例えば返信元メールがHTMLメールだった場合に、そのHTMLメール用のファイル
名を取り出したい場合は、

     $f = dllfuncstr("RootHeader", "X-Html:");

 となります。

 ただし、それだけだと相対パス名になってるだけなので、フルパス名に変換す
るには、

    $f = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
          + "\\" + dllfuncstr("RootHeader", "X-Html:");

 みたいになります。

> “HTMLメール”としてアイコンで添付されている場合、それをエディタで開いて内容
> を作成中の返信メールに貼り付けたいと考えています。

 添付するには、AddAttach関数を使います。

    loaddll "tkinfo.dll";
    $f = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
          + "\\" + dllfuncstr("RootHeader", "X-Html:");
    if( existfile($f) ) {
        #n = dllfunc("AddAttach", $f);
    }


------------------------------------------------------------------

 ちなみにですが、HTMLメールにHTML形式のまま返信することが、今現在ベータ
テスト中の「HTMLメール編集アドイン」で出来るようになりました。

 返信メール用のテンプレートとして、例えば

$(SetHeader,Content-Type,text/html)$-
$(HtmlEdit)$-
<div> 斉藤秀夫です。</div>
<div>&nbsp;</div>
<div> </div>
<hr>
$(QuoteHtml,$(PlainTextToHtml,$(SmallRootHeader)) + $(RootHtml))

 みたいなテンプレートを書いて、Outlook Expressのような感じでHTMLメール
に返信出来るようになります。

[ ]
RE:38835 マクロで返信メールの元ファイルNo.38836
うえむ さん 10/07/23 11:44
 
ありがとうございます。追加で質問です。

>    $f = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
>          + "\\" + dllfuncstr("RootHeader", "X-Html:");

このファイルを秀丸エディタで開く場合、ファイル名を引数で渡すにはどのように記
述すればいいでしょうか?意図しているのは下記なのですが、残念ながら$fという新
規ファイルになってしまいます(泣)。

run "c:\\hidemaru\\hidemaru.exe $f";

[ ]
RE:38836 マクロで返信メールの元ファイルNo.38837
秀まるお2 さん 10/07/23 14:21
 
> run "c:\\hidemaru\\hidemaru.exe $f";

    run "c:\\hidemaru\\hidemaru.exe " + $f;

 でいけると思います。

 それでもしだめでしたら、

    run "c:\\hidemaru\\hidemaru.exe \"" + $f + "\"";

 でいけると思います。

[ ]
RE:38837 マクロで返信メールの元ファイルNo.39420
うえむ さん 10/10/27 15:56
 
お世話になります。

> run "c:\\hidemaru\\hidemaru.exe " + $f; でいけると思います。

秀丸メールのマクロから上記"run"で別ファイル秀丸エディタで開いて、秀丸エディ
タ上で別のマクロを動かし、編集後のテキストを全て元メールの方に反映しています。
実際にはこうしています。
1. 秀丸メールでrunコマンドで秀丸エディタ起動
2. 秀丸エディタでファイルを開き、別のマクロで編集した内容をコピー
3. quitで終了
4. 編集中の秀丸メールに戻りペースト

しかしながら、時たま上記4.に戻ってペーストしても内容がありません。何かお心あ
たりはありませんか?

[ ]
RE:39420 マクロで返信メールの元ファイルNo.39422
秀まるお2 さん 10/10/27 16:30
 
 心当たりは無いのですが、デバッグの方法ならあります。

 まず、秀丸エディタを常駐させる設定にして、クリップボード履歴をONにしま
す。そうすると、たしかに秀丸マクロがクリップボードに何か入れたかどうか、
その辺のことが履歴を見て判定出来ると思います。

 クリップボードに期待したデータが入ってないか、またはデータは入っている
けども、それよりも後にまた別のデータがクリップボードに入った形跡があると
か、そういうので何か解決のヒントになるんじゃないかと思います。

 あと、たしかにクリップボードにデータが入ったかどうかをマクロで確認させ
る手段もあります。例えば、

    setclipboard "";

 としてから実際のマクロの処理をして、例えばマクロの最後で

    copy;

 を実行したとします。そして、たしかにクリップボードに適当なデータが入っ
てるかどうかを検証する用に、以下のような処理を入れる手があります。

    beginclipboardread;
    #foundcr = 0;
    while(1) {
        $s = getclipboard;
        if( $s == "" ) {
            if( #foundcr != 0 ) {
                message "クリップボードに改行しか入ってません。";
            } else {
                message "クリップボードに何もデータが入ってません。";
            }
            break;
        }
        if( strlen($s) > 1
         || rightstr( $s, 1 ) != "\n" ) {
            //OK
            break;
        }
        #foundcr = 1;
    }

 こうすると、クリップボードが空っぽだったり、または改行文字以外に何も文
字が無いような場合はメッセージ表示してくれます。

 という作戦はどうでしょ?

[ ]
RE:39420 マクロで返信メールの元ファイルNo.39423
秀まるお2 さん 10/10/27 16:37
 
 あとですが、そもそも秀丸エディタを使わずに秀丸メールの中だけでファイル
の加工などをすることも可能ではあります。

 例えば $f にファイル名が入っているとしたら、

    loaddll "tkinfo.dll";
    #origineditor = hidemaruhandle(0);
    #n = dllfunc("NewMail");
    #n = dllfunc("SwitchHeaderView", 0);
    gofiletop;
    beginsel;
    gofileend;
    delete;
    insertfile $f;
    ...
    ... 加工の処理...
    ...
    copy;

 のようにして、最後に

    #temp = hidemaruhandle(0);
    setactivehidemaru #origineditor;
    closehidemaruforced #temp;
    paste;

 のようにすれば、一時的な編集用のエディタは閉じて、さらにはマクロで
pasteなんかも実行させたりも出来て便利かと思います。

[ ]
RE:39423 マクロで返信メールの元ファイルNo.39424
うえむ さん 10/10/27 18:19
 
秀丸メール自体で新しいウィンドゥを開く術がわからなかったので秀丸エディタで実
行していました。
解決です。ありがとうございました。

[ ]