Macユーザーからの添付メールNo.25384
パミーノ さん 05/12/02 18:28
 
秀丸メールを便利に使わせて頂いています。

AppleMailユーザーからの添付ファイルが、2個に分かれてきます。たとえば、
aaa.psd
aaa(2).psd
bbb.psd
bbb(2).psd
……
こんなとき、わたしはどうしているかというと、一応確かめてから、
リソースフォークと思われる、aaa.psd、bbb.psd……を削除して、
データフォークのaaa(2).psdをaaa.psdにリネーム、
bbb(2).psdをbbb.psdにリネーム……というようなことを手作業で
行っています。マクロで行うようなことだと思いますが、やり方が
分かりません。よろしくご教示お願いしますm(_._)m。

[ ]
RE:25384 Macユーザーからの添付メールNo.25385
パミーノ さん 05/12/02 18:32
 
追伸です(^^;;

添付メールの削除とリネームは、メールそのものを書き換えてしまっています。(Wi
ndowsの人に転送することがあるので)

[ ]
RE:25385 Macユーザーからの添付メールNo.25394
秀まるお2 さん 05/12/05 12:32
 
 添付ファイルを整理するマクロを作ってみました。

 このマクロを作る課程で、DeleteHeader2関数のバグも見つけてしまいました。

 このマクロは秀丸メール本体上で実行する用です。

    loaddll "tkinfo.dll";
    if( leftstr( dllfuncstr("CurrentHeader", "X-Mailer"), 9 )
        != "AppleMail" ) {
        endmacro;
    }
    #cAttach = dllfunc("CountCurrentHeader", "X-Attach" );
    if( #cAttach <= 1 ) {
        endmacro;
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $home = getregstr( "HomeDir" );
    closereg;
    $account = dllfuncstr("CurrentAccount");
    #i = 0;
    #n = dllfunc("BeginEditMail");
    while( #i < #cAttach ) {
        $name1 = dllfuncstr("CurrentHeader2", "X-Attach", #i );
        $name2 = dllfuncstr("CurrentHeader2", "X-Attach", #i + 1 );
        #x = strstr( $name2, "(2)" );
        if( leftstr( $name1, #x ) != leftstr( $name2, #x )
         || midstr( $name1, #x, 256 ) != midstr( $name2, #x + 3, 256 ) ) {
            //おかしい
            message "添付ファイル・ファイル名が2つペアになってません。";
            break;
        }
        $path1 = $home + $account + "\\" + $name1;
        #n = dllfunc("Bypass_SetFileAttributes", $path1, 0x00000020);
        #n = dllfunc("Bypass_DeleteFile", $path1 );
        if( #n == 0 ) {
            //おかしい
            #n = dllfunc("Bypass_GetLastError");
            message "添付ファイル(リソースフォーク部分)" +
                    "の削除に失敗しました。ファイル名 = "
                     + $name1 + " エラーコード = " + str(#n);
            break;
        }
        #n = dllfunc("Bypass_SetFileAttributes", $path2, 0x00000020);
        $path2 = $home + $account + "\\" + $name2;
        #n = dllfunc("Bypass_MoveFile", $path2, $path1 );
        if( #n == 0 ) {
            //おかしい
            #n = dllfunc("Bypass_GetLastError");
            message "添付ファイル・ファイル名の変更に失敗しました。" +
                    "ファイル名 = " + $name2
                     + " エラーコード = " + str(#n);
            break;
        }
        #n = dllfunc("Bypass_SetFileAttributes", $path1, 0x00000021);
        $new[#new] = $name1;
        #cDelete = #cDelete + 2;
        #new = #new + 1;
        #i = #i + 2;
    }
    #i = 0;
    while( #i < #cDelete ) {
        #n = dllfunc("DeleteHeader", "X-Attach");
        #i = #i + 1;
    }
    #i = 0;
    while( #i < #new ) {
        #n = dllfunc("AddHeader", "X-Attach", $new[#i] );
        #i = #i + 1;
    }
    #n = dllfunc("SaveEditMail", 0, 0);

[ ]
RE:25394 Macユーザーからの添付メールNo.25403
パミーノ さん 05/12/05 18:01
 
秀まるお2さん
お世話になります。
> 添付ファイルを整理するマクロを作ってみました。
さっそくに、ありがとうございました。
ところが、マクロ実行してみたら……うんともすんとも(^^;;。
でマクロを見直し、
>    if( leftstr( dllfuncstr("CurrentHeader", "X-Mailer"), 9 )
>        != "AppleMail" ) {
の部分を、
    if( leftstr( dllfuncstr("CurrentHeader", "X-Mailer"), 10)
        != "Apple Mail" ) {
に変えたら、まばたきもしないうちに、あっという間に思うことをやってくれました
\(^O^)/。
Illustratorにたくさんの配置画像があって……これまでうんざりしていた作業が、
うんと楽になりました。
ありがとうございました。

[ ]