メール受信添付フォルダのフォルダ名の日No.33769
せいみ さん 08/04/13 01:35
 
はじめまして。せいみといいます。
メーラーの移行のためいろいろと調べております。

以前にも似たような投稿があったのですが、別件の内容です。
メールサーバーにある過去のメールを秀丸メールで受信した際に
受信したメールの添付ファイルの受信添付フォルダ以下の
保存先フォルダのフォルダ名がすべてサーバーにアクセスした
日付になっているのですが、これをメールヘッダー情報にある
日付にする方法は、何か有りませんでしょうか?

関連して、他のメーラーからの移行してインポートしたときに、
添付ファイルの保存フォルダが同様に、フォルダ名がすべて
インポートした日付になっております。こちらも対応する方法は
有りませんでしょうか。

教えていただければ幸いでです。

[ ]
RE:33769 メール受信添付フォルダのフォルNo.33780
秀まるお2 さん 08/04/14 13:18
 
 添付ファイル用のフォルダ名というのは、特に意味があって付けてる物という
よりは、「他のフォルダ名と重ならないフォルダ名をなるべく高速に作る」とい
ううことで付けているだけの名前です。なので、特にこのフォルダ名について
ユーザー様のカスタマイズ昨日は無くて、秀丸メールの中での固定のルールで生
成されてしまいます。

 マクロを使うなどして後でフォルダ名を変更するというのも、他のフォルダ名
と重なった場合にどうするかってことを考えると難しいと思います。

 ということで、フォルダ名は気にしないで使っていただくしか無いと思います。

[ ]
RE:33780 メール受信添付フォルダのフォルNo.33792
せいみ さん 08/04/15 08:21
 
ご返答ありがとうございます。

添付ファイルがメール本体から別に保存されているというのは
メーラーが起動していなくても、添付ファイルが必要なときに
取り出せる利点があると思っております。
このときのファイルの特定の基準となるのが、添付ファイルの
入っているフォルダ名だと思います。

長い間同じメーラーを使用していれば、この添付ファイルの
保存フォルダのフォルダ名はほぼメールのやり取りをしていた
日付になるのですが、別のメーラーに移行することによって
この日付とフォルダ名の関係は崩れます。

なるべくこの関係性を崩さず移行できないかなと言うのがこの
質問の最終的な意図になります。
実際これのせいで古いメーラーから一向に移行できておりません(^^;

>特にこのフォルダ名について
>ユーザー様のカスタマイズ機能は無くて、秀丸メールの中での固定のルールで生
>成されてしまいます。

高速性はおちますが、この固定ルールが、受信日付_n から
メールの送信日付_n になるとうれしいなと思います。

ともかく、マイノリティの意見にご返答いただきありがとうございました。
とりあえずコンソールアプリでも作って対応を行なってみようかと
思います。

[ ]
RE:33792 メール受信添付フォルダのフォルNo.33795
秀まるお2 さん 08/04/15 09:20
 
> とりあえずコンソールアプリでも作って対応を行なってみようかと
> 思います。

 では僕の方でマクロを作ってみようかなぁと思います。

[ ]
RE:33795 メール受信添付フォルダのフォルNo.33797
秀まるお2 さん 08/04/15 13:19
 
 秀丸メール本体上で、変更したいメールを複数選択して実行する用のマクロを
作ってみました。

 一応これで大丈夫だと思いますが、もしかしてメールが壊れるといけないので、
どこかでテストしてうまく動くことを確認てから使ってみて欲しいです。

    loaddll "tkinfo.dll";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        call RenameAttachFolder;
    }
    #n = dllfunc("UnlockSelection", 1 );
    endmacro;


RenameAttachFolder:
    $s = dllfuncstr("CurrentHeader","X-Attach:");
    if( $s == "" ) {
        return;
    }
    #x = strstr( $s, "\\" ) + 1;
    #cx = strstr( midstr( $s, #x, 999 ), "\\" );
    $prevfolder = midstr( $s, #x, #cx );
    $prevpath = midstr( $s, 0, #x + #cx );
    $date = dllfuncstr("FormatDate", dllfuncstr("CurrentHeader","Date")
                , "YYMMDD");
    $newfolder = "受信添付" + $date;
    $root = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\";
    $prevpath = $root + $prevpath;
    #number = 0;
    while(1) {
        if( #number < 10 ) {
            $number = "0" + str(#number);
        } else {
            $number = str(#number);
        }
        $newfolder2 = $newfolder + "_" + $number;
        $newpath = $root + leftstr( $s, #x ) + $newfolder2;
        if( $prevpath == $newpath ) {
            break;
        }
        if( dllfunc("Bypass_MoveFile", $prevpath, $newpath) == 1 ) {
            break;
        }
        #number = #number + 1;
        if( #number >= 9999 ) {
            // おかしい
            message "フォルダ名の変更に失敗しました。中断します。"
                    + "エラーコード = "
                    + str(dllfunc("Bypass_GetLastError"));
            endmacro;
        }
    }
    #n = dllfunc("BeginEditMail");
    #count = dllfunc("CountCurrentHeader", "X-Attach");
    #i = 0;
    while( #i < #count ) {
        $prev = dllfuncstr("CurrentHeader2", "X-Attach", #i);
        $basename = midstr( $prev, #x + #cx + 1, 999 );
        $new = leftstr( $prev, #x ) + $newfolder2 + "\\" + $basename;
        #n = dllfunc("SetHeader2", "X-Attach", $new, #i );
        #i = #i + 1;
    }
    #n = dllfunc("SaveEditMail", 0, 0 );
    return;

[ ]