HTMLメールの処理についてNo.33333
kusakabe さん 08/02/15 14:39
 
HTMLメールが送信された場合、「HTMLメール」という添付ファイルを
手作業で削除しているのですが、選択したメールに対して下記処理を
自動で行えないかと思っております。

ウイルス対策の機能で自動的に削除すると、メールを確認するまえに
削除されてしまうため少し抵抗があります。

どなたか、下記を実現するマクロのサンプルを
ご教示いただけるかたいらっしゃいませんでしょうか。

■選択したメールについて下記を行う
 ・「HTMLメール」という名の添付ファイルを削除
  (他の添付ファイルは残す)
 ・ヘッダから「X-Html:受信HTML\XXXXXX_XX\index.htm」を削除

[ ]
RE:33333 HTMLメールの処理についてNo.33337
秀まるお2 さん 08/02/15 18:03
 
> ウイルス対策の機能で自動的に削除すると、メールを確認するまえに
> 削除されてしまうため少し抵抗があります。

 もし、HTMLメールを見る必要性がほとんど無くて、保険のためにHTMLメールを
見る手段が残っていればいいという程度であれば、別の作戦がおすすめです。そ
の作戦とは、つまり、ウィルス対策で自動削除してしまいつつ、いざという時は
受信ログからHTMLメールを復活させるっていう作戦です。

 受信ログは、デフォルトの設定だと2ヶ月程度は残ってます。

 あくまでマクロでってことであれば…、実はHTMLメールというのは
「index.html」だけじゃなくてイメージデータなんかも入っていたりするので、
それも含めて削除するのはちょっと難しかったりしますけど…。

    loaddll "tkinfo.dll";
    $html = dllfuncstr("CurrentHeader", "X-Html");
    if( $html == "" ) {
        endmacro;
    }
    $folder = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
        + "\\" + leftstr( $html, strlen($html) - strlen("index.htm") );
    #n = dllfunc("Bypass_DeleteFile", $folder + "index.htm" );
    #c = dllfuncstr("CountCurrentHeader", "X-Attach");
    #i = 0;
    while( #i < #c ) {
        $name = dllfuncstr("CurrentHeader2", "X-Attach", #i);
        #x = strstr( $name, "\\");
        #x = strstr( midstr( $name, #x + 1, 999 ), "\\" ) + #x + 2;
        $base = midstr( $name, #x, 999 );
        #n = dllfunc("Bypass_DeleteFile", $folder + $base );
    }
    #n = dllfunc("Bypass_DeleteFile"
             , $folder + "$$$ReferenceCount$$$.$$$" );
    #n = dllfunc("Bypass_RemoveDirectory" $folder);

 とかいう感じで削除はできると思いますが…。(上記マクロはあくまで走り書
きです)

 もし必要でしたらちゃんとしたの作ってもいいです。

[ ]
RE:33337 HTMLメールの処理についてNo.33338
kusakabe さん 08/02/15 19:54
 
ありがとうございます。
教えていただいたマクロを実行してみましたが、「数値が指定される
べき所に数値以外のものが指定されています」というエラーになって
しまいました。

画像などは添付されていなくて、index.htmlのみ添付されているメール
のHTMLメールを削除し、HTMLメールがなかったことにしたいのですが、
どのへんを修正すれば動作しますでしょうか。
もし宜しければ教えてください。

[ ]
RE:33338 HTMLメールの処理についてNo.33339
秀まるお2 さん 08/02/16 10:07
 
 ちゃんとしたマクロを作ってみました。

 秀丸メール本体上で、1通選択して実行する用のマクロです。

    loaddll "tkinfo.dll";
    $html = dllfuncstr("CurrentHeader", "X-Html");
    if( $html == "" ) {
        endmacro;
    }
    $folder = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
        + "\\" + leftstr( $html, strlen($html) - strlen("index.htm") );
    $file = $folder + "index.htm";
    #n = dllfunc("Bypass_SetFileAttributes", $file, 0);
    #n = dllfunc("Bypass_DeleteFile", $file );
    #c = dllfunc("CountCurrentHeader", "X-Attach");
    #i = 0;
    while( #i < #c ) {
        $name = dllfuncstr("CurrentHeader2", "X-Attach", #i);
        #x = strstr( $name, "\\");
        #x = strstr( midstr( $name, #x + 1, 999 ), "\\" ) + #x + 2;
        $base = midstr( $name, #x, 999 );
        $file = $folder + $base;
        #n = dllfunc("Bypass_SetFileAttributes", $file, 0);
        #n = dllfunc("Bypass_DeleteFile", $file );
        #i = #i + 1;
    }
    $file = $folder + "$$$ReferenceCount$$$.$$$";
        #n = dllfunc("Bypass_SetFileAttributes", $file, 0);
        #n = dllfunc("Bypass_DeleteFile", $file );
    #n = dllfunc("Bypass_RemoveDirectory", $folder);

    #n = dllfunc("BeginEditMail");
    #n = dllfunc("DeleteHeader", "X-Html");
    #n = dllfunc("SaveEditMail", 0, 0);
    #n = dllfunc("SetMailFlag", "altered", 0);

[ ]
RE:33339 HTMLメールの処理についてNo.33346
kusakabe さん 08/02/18 18:39
 
> ちゃんとしたマクロを作ってみました。
>
> 秀丸メール本体上で、1通選択して実行する用のマクロです。

マクロを作成いただきありがとうございました。
思っていた通りのことができ、大変助かりました。

[ ]