添付ファイルをその都度保存No.07329
鹿角 さん 02/05/24 12:30
 
鹿角です。

 以前(5/17)に「添付ファイルの一括保存」のご希望で投稿があり、
秀まるお様からマクロのご提案がありました。(その後マクロライブラリ
にもアップされています。)

 一括ではなく、いま受信したメールだけの添付ファイルを自動的に保存
することは可能でしょうか。
 保存のタイミングは受信が一段落したとき、保存フォルダは固定、
重複する場合は上書きの問い合わせが必要、などが条件ですが。
 一括保存では古い、不要のファイルまで保存されてしまいますので。

[ ]
RE:07329 添付ファイルをその都度保存No.07341
秀まるお2 さん 02/05/24 14:41
 
 受信したメール1つ1つについて添付ファイルの保存を実行するなら、例えば以下
のマクロになります。

------------------------------------------------------------------------
    $dest = "c:\test";
    loaddll "tkinfo.dll";
    while( dllfunc( "SelectRecvMail" ) ) {
        $attach = dllfuncstr("CurrentHeader", "X-Attach");
        if( $attach != "" ) {
            $src = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
                 + "\\" + $attach;
            // フォルダ名のみに変換する。
            #xFolder = -1;
            #xFile = -1;
            while(1) {
                #x = strstr( midstr( $src, #xFile + 1, 256 ), "\\" );
                if( #x < 0 ) {
                    break;
                }
                #x = #x + #xFile + 1;
                #xFolder = #xFile;
                #xFile = #x;
            }
            $src = leftstr( $src, #xFile );
            $command = "xcopy.exe \"" + $src + "\" \""
                      + $dest + "\\" + midstr( $src, #xFolder + 1, 256 )
                       + "\" /S /I";
            runsync2 $command;
        }
    }
------------------------------------------------------------------------

 $dest = 部分に適当なフォルダ名を入れればいいはずです。
 受信後に、受信したメール1つ1つを全部なめ回すような処理となってしまうので
あまり見た目はよくないです。特定のフォルダに振り分けられたメールに限って処理
させる(SelectRecvMailInFolder関数を使う)方がいいかもしれないです。その辺は
適当にカスタマイズして使って欲しいです。

 例えば、

    #n = dllfunc("SelectFolder", "テスト", "受信\\テストフォルダ");
    while( dllfunc("SelectRecvMailInFolder" ) {
        ...
    }

 と直すなどです。

[ ]
RE:07341 添付ファイルをその都度保存No.07345
鹿角 さん 02/05/24 17:24
 
鹿角です。
素人ですので、もう少しお付き合いをお願いいたします。

>  $dest = 部分に適当なフォルダ名を入れればいいはずです。

 $dest = "c:\data";
としているのですが、HomeDirである \Turukame の下に\dataが出来てしまいます。
どこを変えたらよいでしょうか?

 xcopy で読みとり専用属性がはずれてくれるのは非常にうれしいです。

>  受信後に、受信したメール1つ1つを全部なめ回すような処理となってしまうので
> あまり見た目はよくないです。

 いえ、メールは多くないので、動きとしては十分です。ありがとうございます。

[ ]
RE:07345 添付ファイルをその都度保存No.07346
tnobu2 さん 02/05/24 17:29
 
>>  $dest = 部分に適当なフォルダ名を入れればいいはずです。
>
> $dest = "c:\data";
>としているのですが、HomeDirである \Turukame の下に\dataが出来てしまいます。
>どこを変えたらよいでしょうか?

元のマクロが間違っています。

 $dest = "c:\\data";

でどうでしょう。

[ ]
RE:07346 添付ファイルをその都度保存No.07347
鹿角 さん 02/05/24 18:56
 
tnobu2 さん、こんにちは。鹿角です。
助言をありがとうございます。

> 元のマクロが間違っています。
>
>  $dest = "c:\\data";
>
> でどうでしょう。

残念ながらマクロ自体が作動しませんでした。

[ ]
RE:07347 添付ファイルをその都度保存No.07351
秀まるお2 さん 02/05/24 19:14
 
>残念ながらマクロ自体が作動しませんでした。

 間違ったマクロをアップロードしてすみませんが、実はそもそもアップロードした
マクロの動作確認はしてませんでした。

 でもって改めて動作確認しましたら、やはり1行目の$dest=だけ直せば正常動作し
ます。

 試しにご自分宛に添付ファイル付きメールを送り、それを受信してからマクロ実行
してみてはどうでしょ?

[ ]
RE:07351 添付ファイルをその都度保存No.07352
鹿角 さん 02/05/24 19:33
 
秀まるおさん、こんにちは。鹿角です。

>  でもって改めて動作確認しましたら、やはり1行目の$dest=だけ直せば正常動作し
> ます。

はい、一度PCを立ち上げ直したらうまくいきました。
ファイルの更新がうまくできてなかったのだと思います。
問題なく動作しました。ありがとうございます。

tnobu2さん、重ねてありがとうございました。

[ ]