添付ファイルを暗号化ZIPNo.04052
くまくま さん 18/10/08 17:21
 
最近、メールの添付ファイルを暗号化ZIPにしてやりとりすることが多くなっています。
送りたいファイルをまとめて一つのZIPファイルにして暗号をかけ、添付して送ります。
そして、ZIPの暗号化に使ったパスワードは別のメールで送る、というやりかたです。

添付をZIPにしてくれるマクロはあるようですが、同時にPWを別メールで遅れるよう
なものはありません。

いろいろ、探していたら以下のようなサイトを見つけました。
http://kiki47642.s1002.xrea.com/?p=313

これは、どこかに残っていませんでしょうか?

こちらにお尋ねするのもどうかと思いましたが、
ご存知の方いらしたらご教示いただけませんでしょうか。

追記
まる3日かかって、やっとBeckyから乗り換えました。
サクサクですね!!!




[ ]
RE:04052 添付ファイルを暗号化ZIPNo.04055
秀まるお2 さん 18/10/09 09:09
 
 そのマクロの存在場所はちょっと分からないので、とりあえず僕の作った添付ファ
イル圧縮マクロを少し改良してパスワード通知メールも生成するようにしてみました。
そんなのでどうでしょうか。

-------------マクロ内容--------------------------------
// 添付ファイル圧縮-7zip-パスワード別便通知.mac by 斉藤秀夫
// 2012.02.24
// 2012.04.02 秀丸メール本体ウィンドウ上で実行してうまくいかないバグ修正。
// 2013.02.28 既に.zip単独ファイルになってる物は圧縮しない。
// 2018.10.09 パスワード別便通知
// 7-zipのダウンロード先:  http://sevenzip.sourceforge.jp/


    //パスワード付きにする場合はここにパスワードを設定しておく。
    //パスワード無しにするなら""を代入する。
    //パスワードを毎回入力したい場合は $password = "*"としておく。
    //パスワードの中には空白は入れないでください。
    //受信したメールの添付ファイルを圧縮する場合についてはパスワードの指定は
効きません。常にパスワード無しで圧縮されます。
    //
    // 例:
    //  $password = "";         ... パスワード無し
    //  $password = "pass";     ... パスワードを"pass"にする。
    //  $password = "*";        ... パスワードを毎回入力する。
    $password = "*";

    loaddll "tkinfo.dll";
    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
    if( ! existfile( $7zip ) ) {
        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
        if( ! existfile( $7zip ) ) {
            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
            endmacro;
        }
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $home = getregstr( "HomeDir" );
    closereg;
    $account = dllfuncstr("CurrentAccount");
    if( dllfunc("IsTuruKameMain") ) {
        question "現在選択しているメール(複数も可)の添付ファイルを圧縮しま
す。よろしいですか?";
        if( result == yes ) goto CompressAll;
        endmacro;
    }

    if( dllfunc("MailType") == 3 ) {
        message "受信したメールの添付ファイル・圧縮は、秀丸メール本体上でし
か実行できません。";
        endmacro;
    }
    if( readonly ) {
        #n = dllfunc("EnableEdit");
    }
    #cAttach = 0;
    while(1) {
        $aAttach[#cAttach] = dllfuncstr("CurrentHeader2", "X-Attach"
                                       , #cAttach );
        if( $aAttach[#cAttach] == "" ) break;
        #cAttach = #cAttach + 1;
    }
    if( #cAttach == 0 ) {
        message "添付ファイルは1つもありません。";
        endmacro;
    }
    if( #cAttach == 1 ) {
        if( rightstr( $aAttach[0], 4 ) == ".zip" ) {
            message "添付ファイルは既に圧縮されてます。";
            endmacro;
        }
        $dest = $aAttach[0] + ".zip";
    } else {
        $dest = $aAttach[0] + "など.zip";
    }
    while(1) {
        #n = strstr( $dest, "\\" );
        if( #n < 0 ) {
            break;
        }
        $dest = midstr( $dest, #n + 1, 256 );
    }
    $dest = input( "圧縮して作成するファイル名は?", $dest );
    if( $dest == "" ) {
        endmacro;
    }
    if( $password == "*" ) {
        $password = input( "パスワードは?" );
        if( $password == "" ) {
            question "パスワード無しにしますか?";
            if( result != yes ) {
                endmacro;
            }
        }
    }
    if( $password != "" ) {
        $7zip = $7zip + " -p" + $password;
    }
    $tmp = getenv("temp");
    if( $tmp == "" ) {
        $tmp = getenv("tmp");
    }
    if( rightstr($tmp, 1) != "\\" ) {
        $tmp = $tmp + "\\";
    }
    $destbase = $dest;
    $dest = $tmp + $dest;
    #n = dllfunc("Bypass_SetFileAttributes", $dest, 0x00000020);
    #n = dllfunc("Bypass_DeleteFile", $dest);
    //添付ファイル圧縮-7zip.macで修正。
    //$cmd = "-j \"" + $dest + "\"";
    $cmd = "a \"" + $dest + "\"";
    #i = 0;
    while( #i < #cAttach ) {
        $cmd = $cmd + " \"" + $home + $account + "\\" + $aAttach[#i] + "\"";
        #i = #i + 1;
    }
    //添付ファイル圧縮-7zip.macで修正。
    //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
    runsync2 $7zip + " " + $cmd;
    if( !result ) {
        message "7zipの実行に失敗しました。";
        endmacro;
    }
    #n = dllfunc( "AddAttach", $dest );
    // ファイルの削除
    #n = dllfunc("Bypass_DeleteFile", $dest);
    #i = 0;
    while( #i < #cAttach ) {
        #n = dllfunc( "UndoAttach", $aAttach[#i] );
        #i = #i + 1;
    }
    if( $password != "" ) {
        $to = dllfuncstr("CurrentHeader", "To");
        $subject = dllfuncstr("CurrentHeader", "Subject");
        #n = dllfunc("NewMail");
        #n = dllfunc("SetHeader", "To", $to );
        #n = dllfunc("SetHeader", "Subject", "パスワードの通知 - " + $subjec
t );
        gofiletop;
        beginsel;
        gofileend;
        delete;
        insert "添付ファイル(" + $destbase + ")の解凍用のパスワードは、「"
 + $password + "」です。\n";
    }
    endmacro;


// 受信したメールの添付ファイルを圧縮する処理。
CompressAll:
    #n = dllfunc("LockSelection");
    #cCompressed = 0;
    #cCompressedMail = 0;
    while( dllfunc("EnumSelection", 1) != 0 ) {
        #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
        if( #attachcount != 0 ) {
            if( #attachcount == 1
             && dllfuncstr("ToLower", rightstr( dllfuncstr("CurrentHeader",
"X-Attach"), 4 ) ) == ".zip" ) {
                //スキップ
                if( #warningshown == 0 ) {
                    #warningshown = 1;
                    message "既にzip形式になってる添付ファイルが1つだけある
メールをスキップします。";
                }
            } else {
                #n = dllfunc("BeginEditMail");
                #WantSave = 1;
                #i = 0;

                //2006.4.14 複数ファイルをまとめて1つにするバージョン
                $attach = dllfuncstr("CurrentHeader", "X-Attach");
                $path = $home + $account + "\\" + $attach;
                if( #attachcount == 1 ) {
                    $lzh = $attach + ".zip";
                    $pathLzh = $path + ".zip";
                } else {
                    $lzh = $attach + "など.zip";
                    $pathLzh = $path + "など.zip";
                }
                //添付ファイル圧縮-7zip.macで修正。
                //$cmd = "-j \"" + $pathLzh + "\"";
                $cmd = "a \"" + $pathLzh + "\"";
                while(1) {
                    $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
                    if( $attach == "" ) {
                        break;
                    }
                    $path[#i] = $home + $account + "\\" + $attach;
                    $cmd = $cmd + " \"" + $path[#i] + "\"";
                    #i = #i + 1;
                    #count = #i;
                    #cCompressed = #cCompressed + 1;
                }
                #cCompressedMail = #cCompressedMail + 1;

                //添付ファイル圧縮-7zip.macで修正。
                //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
                runsync2 $7zip + " " + $cmd;
                if( !result ) {
                    message "7zipの実行に失敗しました。マクロを中断します。";
                    endmacro;
                }
                if( ! existfile( $pathLzh ) ) {
                    message "Zip圧縮に失敗しました。(圧縮によって生成された
はずのファイルがありません。)";
                    #WantSave = 0;
                } else {
                    #n = dllfunc("Bypass_SetFileAttributes", $pathLzh, 0x000
00021);     //ReadOnly属性に設定。
                    #i = 0;
                    while( #i < #count ) {
                        #n = dllfunc("Bypass_SetFileAttributes", $path[#i],
0x00000020);        // ReadOnlyを解除。
                        #n = dllfunc("Bypass_DeleteFile", $path[#i]);
                        #i = #i + 1;
                    }
                    while( #i > 0 ) {
                        #i = #i - 1;
                        #n = dllfunc("DeleteHeader2", "X-Attach", #i);
                    }
                    #n = dllfunc("SetHeader", "X-Attach", $lzh);
                }
                if( #WantSave ) {
                    #n = dllfunc("SaveEditMail", 0);
                } else {
                    #n = dllfunc("CancelEditMail");
                }
            }
        }
    }
    #n = dllfunc("UnlockSelection", 1);
    if( #cCompressedMail == 0 ) {
        message "圧縮した添付ファイルはありませんでした。";
    } else {
        message str(#cCompressedMail) + "通のメールの、 " + str(#cCompresse
d) + "個の添付ファイルを圧縮しました。";
    }
    endmacro;

[ ]
RE:04055 添付ファイルを暗号化ZIPNo.04059
くまくま さん 18/10/09 23:31
 
えええええええええええええええええ!!!!!
あの〜作ってくれちゃったんですか……

取り急ぎ、御礼申し上げます!!!
試させていただきますね















> そのマクロの存在場所はちょっと分からないので、とりあえず僕の作った添付フ
>ァイル圧縮マクロを少し改良してパスワード通知メールも生成するようにしてみま
>した。そんなのでどうでしょうか。
>
>-------------マクロ内容--------------------------------
>// 添付ファイル圧縮-7zip-パスワード別便通知.mac by 斉藤秀夫
>// 2012.02.24
>// 2012.04.02 秀丸メール本体ウィンドウ上で実行してうまくいかないバグ修正。
>// 2013.02.28 既に.zip単独ファイルになってる物は圧縮しない。
>// 2018.10.09 パスワード別便通知
>// 7-zipのダウンロード先:  http://sevenzip.sourceforge.jp/
>
>
>    //パスワード付きにする場合はここにパスワードを設定しておく。
>    //パスワード無しにするなら""を代入する。
>    //パスワードを毎回入力したい場合は $password = "*"としておく。
>    //パスワードの中には空白は入れないでください。
>    //受信したメールの添付ファイルを圧縮する場合についてはパスワードの指定
>は効きません。常にパスワード無しで圧縮されます。
>    //
>    // 例:
>    //  $password = "";         ... パスワード無し
>    //  $password = "pass";     ... パスワードを"pass"にする。
>    //  $password = "*";        ... パスワードを毎回入力する。
>    $password = "*";
>
>    loaddll "tkinfo.dll";
>    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
>    if( ! existfile( $7zip ) ) {
>        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
>        if( ! existfile( $7zip ) ) {
>            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
>ンストールしてください。\n\n" +
>                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fi
>les (x86)\\7-Zip にインストールされてる必要があります。";
>            endmacro;
>        }
>    }
>    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
>    $home = getregstr( "HomeDir" );
>    closereg;
>    $account = dllfuncstr("CurrentAccount");
>    if( dllfunc("IsTuruKameMain") ) {
>        question "現在選択しているメール(複数も可)の添付ファイルを圧縮し
>ます。よろしいですか?";
>        if( result == yes ) goto CompressAll;
>        endmacro;
>    }
>
>    if( dllfunc("MailType") == 3 ) {
>        message "受信したメールの添付ファイル・圧縮は、秀丸メール本体上でし
>か実行できません。";
>        endmacro;
>    }
>    if( readonly ) {
>        #n = dllfunc("EnableEdit");
>    }
>    #cAttach = 0;
>    while(1) {
>        $aAttach[#cAttach] = dllfuncstr("CurrentHeader2", "X-Attach"
>                                       , #cAttach );
>        if( $aAttach[#cAttach] == "" ) break;
>        #cAttach = #cAttach + 1;
>    }
>    if( #cAttach == 0 ) {
>        message "添付ファイルは1つもありません。";
>        endmacro;
>    }
>    if( #cAttach == 1 ) {
>        if( rightstr( $aAttach[0], 4 ) == ".zip" ) {
>            message "添付ファイルは既に圧縮されてます。";
>            endmacro;
>        }
>        $dest = $aAttach[0] + ".zip";
>    } else {
>        $dest = $aAttach[0] + "など.zip";
>    }
>    while(1) {
>        #n = strstr( $dest, "\\" );
>        if( #n < 0 ) {
>            break;
>        }
>        $dest = midstr( $dest, #n + 1, 256 );
>    }
>    $dest = input( "圧縮して作成するファイル名は?", $dest );
>    if( $dest == "" ) {
>        endmacro;
>    }
>    if( $password == "*" ) {
>        $password = input( "パスワードは?" );
>        if( $password == "" ) {
>            question "パスワード無しにしますか?";
>            if( result != yes ) {
>                endmacro;
>            }
>        }
>    }
>    if( $password != "" ) {
>        $7zip = $7zip + " -p" + $password;
>    }
>    $tmp = getenv("temp");
>    if( $tmp == "" ) {
>        $tmp = getenv("tmp");
>    }
>    if( rightstr($tmp, 1) != "\\" ) {
>        $tmp = $tmp + "\\";
>    }
>    $destbase = $dest;
>    $dest = $tmp + $dest;
>    #n = dllfunc("Bypass_SetFileAttributes", $dest, 0x00000020);
>    #n = dllfunc("Bypass_DeleteFile", $dest);
>    //添付ファイル圧縮-7zip.macで修正。
>    //$cmd = "-j \"" + $dest + "\"";
>    $cmd = "a \"" + $dest + "\"";
>    #i = 0;
>    while( #i < #cAttach ) {
>        $cmd = $cmd + " \"" + $home + $account + "\\" + $aAttach[#i] + "\"";
>        #i = #i + 1;
>    }
>    //添付ファイル圧縮-7zip.macで修正。
>    //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
>    runsync2 $7zip + " " + $cmd;
>    if( !result ) {
>        message "7zipの実行に失敗しました。";
>        endmacro;
>    }
>    #n = dllfunc( "AddAttach", $dest );
>    // ファイルの削除
>    #n = dllfunc("Bypass_DeleteFile", $dest);
>    #i = 0;
>    while( #i < #cAttach ) {
>        #n = dllfunc( "UndoAttach", $aAttach[#i] );
>        #i = #i + 1;
>    }
>    if( $password != "" ) {
>        $to = dllfuncstr("CurrentHeader", "To");
>        $subject = dllfuncstr("CurrentHeader", "Subject");
>        #n = dllfunc("NewMail");
>        #n = dllfunc("SetHeader", "To", $to );
>        #n = dllfunc("SetHeader", "Subject", "パスワードの通知 - " + $subje
>ct );
>        gofiletop;
>        beginsel;
>        gofileend;
>        delete;
>        insert "添付ファイル(" + $destbase + ")の解凍用のパスワードは、
>「" + $password + "」です。\n";
>    }
>    endmacro;
>
>
>// 受信したメールの添付ファイルを圧縮する処理。
>CompressAll:
>    #n = dllfunc("LockSelection");
>    #cCompressed = 0;
>    #cCompressedMail = 0;
>    while( dllfunc("EnumSelection", 1) != 0 ) {
>        #attachcount = dllfunc("CountCurrentHeader", "X-Attach");
>        if( #attachcount != 0 ) {
>            if( #attachcount == 1
>             && dllfuncstr("ToLower", rightstr( dllfuncstr("CurrentHeader",
> "X-Attach"), 4 ) ) == ".zip" ) {
>                //スキップ
>                if( #warningshown == 0 ) {
>                    #warningshown = 1;
>                    message "既にzip形式になってる添付ファイルが1つだけあ
>るメールをスキップします。";
>                }
>            } else {
>                #n = dllfunc("BeginEditMail");
>                #WantSave = 1;
>                #i = 0;
>
>                //2006.4.14 複数ファイルをまとめて1つにするバージョン
>                $attach = dllfuncstr("CurrentHeader", "X-Attach");
>                $path = $home + $account + "\\" + $attach;
>                if( #attachcount == 1 ) {
>                    $lzh = $attach + ".zip";
>                    $pathLzh = $path + ".zip";
>                } else {
>                    $lzh = $attach + "など.zip";
>                    $pathLzh = $path + "など.zip";
>                }
>                //添付ファイル圧縮-7zip.macで修正。
>                //$cmd = "-j \"" + $pathLzh + "\"";
>                $cmd = "a \"" + $pathLzh + "\"";
>                while(1) {
>                    $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
>                    if( $attach == "" ) {
>                        break;
>                    }
>                    $path[#i] = $home + $account + "\\" + $attach;
>                    $cmd = $cmd + " \"" + $path[#i] + "\"";
>                    #i = #i + 1;
>                    #count = #i;
>                    #cCompressed = #cCompressed + 1;
>                }
>                #cCompressedMail = #cCompressedMail + 1;
>
>                //添付ファイル圧縮-7zip.macで修正。
>                //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);
>                runsync2 $7zip + " " + $cmd;
>                if( !result ) {
>                    message "7zipの実行に失敗しました。マクロを中断します。";
>                    endmacro;
>                }
>                if( ! existfile( $pathLzh ) ) {
>                    message "Zip圧縮に失敗しました。(圧縮によって生成され
>たはずのファイルがありません。)";
>                    #WantSave = 0;
>                } else {
>                    #n = dllfunc("Bypass_SetFileAttributes", $pathLzh, 0x00
>000021);     //ReadOnly属性に設定。
>                    #i = 0;
>                    while( #i < #count ) {
>                        #n = dllfunc("Bypass_SetFileAttributes", $path[#i],
> 0x00000020);        // ReadOnlyを解除。
>                        #n = dllfunc("Bypass_DeleteFile", $path[#i]);
>                        #i = #i + 1;
>                    }
>                    while( #i > 0 ) {
>                        #i = #i - 1;
>                        #n = dllfunc("DeleteHeader2", "X-Attach", #i);
>                    }
>                    #n = dllfunc("SetHeader", "X-Attach", $lzh);
>                }
>                if( #WantSave ) {
>                    #n = dllfunc("SaveEditMail", 0);
>                } else {
>                    #n = dllfunc("CancelEditMail");
>                }
>            }
>        }
>    }
>    #n = dllfunc("UnlockSelection", 1);
>    if( #cCompressedMail == 0 ) {
>        message "圧縮した添付ファイルはありませんでした。";
>    } else {
>        message str(#cCompressedMail) + "通のメールの、 " + str(#cCompresse
>d) + "個の添付ファイルを圧縮しました。";
>    }
>    endmacro;

[ ]
RE:04055 添付ファイルを暗号化ZIPNo.04832
karaulsa さん 19/03/07 12:28
 
暗号化zip自動解凍マクロでお世話になったものです。
こちらのマクロも、あればとても便利なのだがなあ、とずっと思っていました。
是非お世話になりたいのですが、生成されたPWを送信するメールには、
元のメールと同じ署名をつけることが出来ないのでしょうか。テンプレートの
設定をいじってみましたが、署名が現れません。
連続で厚かましいお願いなのですが、どうすれば、PW送信メールに署名を
つけることが出来るのか、教えて頂けないでしょうか。

[ ]
RE:04832 添付ファイルを暗号化ZIPNo.04836
秀まるお2 さん 19/03/07 14:36
 
 署名も付けるように直してみました。

 あと、乱数生成のためのEnterキーを押す回数を1回減らしました。

 他にも何かあれば簡単に直せるので遠慮無く連絡ください。

----------------------------------------------------------------------------
------
// 添付ファイル圧縮-7zip-パスワード別便通知.mac by 斉藤秀夫
// 2019.02.24
// 7-zipのダウンロード先:  http://sevenzip.sourceforge.jp/
//
// 2019.03.07 署名も付けるようにした。

    //パスワード付きにする場合はここにパスワードを設定しておく。
    //パスワード無しにするなら""を代入する。
    //パスワードを毎回入力したい場合は $password = "*"としておく。
    //パスワードの中には空白は入れないでください。
    //受信したメールの添付ファイルを圧縮する場合についてはパスワードの指定は
効きません。常にパスワード無しで圧縮されます。
    //
    // 例:
    //  $password = "";         ... パスワード無し
    //  $password = "pass";     ... パスワードを"pass"にする。
    //  $password = "*";        ... パスワードを毎回入力する。
    //  #passwordlength = 10;   ... パスワードを自動生成。長さ指定。
    #passwordlength = 6;

    loaddll "tkinfo.dll";
    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
    if( ! existfile( $7zip ) ) {
        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
        if( ! existfile( $7zip ) ) {
            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
            endmacro;
        }
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $home = getregstr( "HomeDir" );
    closereg;
    $account = dllfuncstr("CurrentAccount");
    if( dllfunc("IsTuruKameMain") ) {
        message "このマクロは送信するメール専用です。";
        endmacro;
    }

    if( dllfunc("MailType") == 3 || readonly ) {
        message "受信したメールの添付ファイル・圧縮は、このマクロでは出来ま
せん。";
        endmacro;
    }
    if( dllfuncstr("CurrentHeader", "To" ) == "" ) {
        message "宛先がまだ指定されてません。このマクロは宛先/件名を入力した
後に実行してください。";
        endmacro;
    }
    if( dllfuncstr("CurrentHeader", "Subject" ) == "" ) {
        message "件名がまだ指定されてません。このマクロは宛先/件名を入力した
後に実行してください。";
        endmacro;
    }
    #cAttach = 0;
    while(1) {
        $aAttach[#cAttach] = dllfuncstr("CurrentHeader2", "X-Attach"
                                       , #cAttach );
        if( $aAttach[#cAttach] == "" ) break;
        #cAttach = #cAttach + 1;
    }
    if( #cAttach == 0 ) {
        message "添付ファイルは1つもありません。";
        endmacro;
    }
    if( #cAttach == 1 ) {
        if( rightstr( $aAttach[0], 4 ) == ".zip" ) {
            message "添付ファイルは既に圧縮されてます。";
            endmacro;
        }
        $dest = $aAttach[0] + ".zip";
    } else {
        $dest = $aAttach[0] + "など.zip";
    }
    while(1) {
        #n = strstr( $dest, "\\" );
        if( #n < 0 ) {
            break;
        }
        $dest = midstr( $dest, #n + 1, 256 );
    }
    $dest = input( "圧縮して作成するファイル名は?", $dest );
    if( $dest == "" ) {
        endmacro;
    }
    if( #passwordlength != 0 ) {
        #i = 0;
        $password = "";
        while( #i < #passwordlength ) {
            if( #i != 0 ) {
                message "乱数を生成する用に、何かキーを押してください。(あ
と" + str( #passwordlength - #i ) + "回)";
            }
            refreshdatetime;
            #rand = (tickcount + #i + val(second) + val(minute)) % (10 + 26
+ 26);
            if( #rand < 10 ) {
                $rand = char( '0' + #rand );
            } else if( #rand < 10 + 26 ) {
                $rand = char( 'a' + #rand - 10 );
            } else {
                $rand = char( 'A' + #rand - 10 - 26 );
            }
            $password = $password + $rand;
            #i = #i + 1;
        }
    } else {
        if( $password == "*" ) {
            $password = input( "パスワードは?" );
            if( $password == "" ) {
                question "パスワード無しにしますか?";
                if( result != yes ) {
                    endmacro;
                }
            }
        }
    }

    //「ドキュメント」フォルダ配下に生成する?
    openreg "CURRENTUSER","Software\\Microsoft\\Windows\\CurrentVersion\\Exp
lorer\\Shell Folders";
    $outfolder = getregstr("Personal");
    closereg;
    $outfolder = $outfolder + "\\ZipTemp";
    runsync2 "cmd.exe /c rmdir /s /q \"" + $outfolder + "\"";       //古いフ
ァイルのゴミを削除
    #n = dllfunc("Bypass_CreateDirectory", $outfolder);

    $destbase = $dest;
    $dest = $outfolder + "\\" + $dest;
    #n = dllfunc("Bypass_SetFileAttributes", $dest, 0x00000020);
    #n = dllfunc("Bypass_DeleteFile", $dest);
    //添付ファイル圧縮-7zip.macで修正。
    //$cmd = "-j \"" + $dest + "\"";
    $cmd = "a \"" + $dest + "\"";
    #i = 0;
    while( #i < #cAttach ) {
        $cmd = $cmd + " \"" + $home + $account + "\\" + $aAttach[#i] + "\"";
        #i = #i + 1;
    }
    //添付ファイル圧縮-7zip.macで修正。
    //#n = dllfunc("Zip", hidemaruhandle(0), $cmd);

    if( $password != "" ) {
        $cmd = "-p" + $password + " " + $cmd;
    }
    $cmdline = "\"" + $7zip + "\" " + $cmd;
    runsync2 $cmdline;
    if( !result ) {
        message "7zipの実行に失敗しました。";
        endmacro;
    }
    if( ! existfile( $dest ) ) {
        message "7zipで生成されたはずのファイルがありません。たぶん圧縮に失
敗しています。\nファイル名 = " + $dest;
        endmacro;
    }
    #n = dllfunc("AddAttach", $dest);
    // ファイルの削除
    #n = dllfunc("Bypass_DeleteFile", $dest);
    #i = 0;
    while( #i < #cAttach ) {
        #n = dllfunc("UndoAttach", $aAttach[#i]);
        #i = #i + 1;
    }
    if( $password != "" ) {
        $to = dllfuncstr("CurrentHeader", "To");
        $toname = dllfuncstr("SetNameOnly", $to);
        if( $toname == "" ) {
            $toname = $to;
        }
        $subject = dllfuncstr("CurrentHeader", "Subject");
        $sign = dllfuncstr("CurrentSignName");
        #attachhidemaru = hidemaruhandle(0);
        #n = dllfunc("NewMail");
        #n = dllfunc("SwitchSign", "");         //署名無しに一回切り替え
        #n = dllfunc("SetHeader", "To", $to );
        #n = dllfunc("SetHeader", "Subject", "パスワードの通知 - " + $subjec
t );
        gofiletop;
        beginsel;
        gofileend;
        delete;
        insert $toname + " 様\n\n暗号化したファイルを別メールで送信しました
ので、\nパスワードをお知らせします。\n\n" +
                "件名 : " + $subject + "\n" +
                "\n" +
                "添付ファイル名: " + $destbase + "\n" +
                "解凍パスワード: " + $password + "\n" +
                "\n" +
                "よろしくお願いします。\n";
        if( leftstr($sign, 1) == "\\" ) {
            //切り替えできない
            $signContent = dllfuncstr("LoadTemplate", "sign", $sign);
            if( $signContent != "" ) {
                insert "\n" + $signContent;
            }
        } else {
            #n = dllfunc("SwitchSign", $sign);          //署名をここで切り替え
        }
        gofiletop;
        setactivehidemaru #attachhidemaru;
    }
    endmacro;

[ ]
RE:04836 添付ファイルを暗号化ZIPNo.04840
karaulsa さん 19/03/07 19:05
 
> 署名も付けるように直してみました。
> あと、乱数生成のためのEnterキーを押す回数を1回減らしました。
> 他にも何かあれば簡単に直せるので遠慮無く連絡ください。

素晴らしい!
これで永年の悩みが解決されました。このような迅速で手厚いフォローを
して頂いて、本当に感謝しております。


[ ]
RE:04840 添付ファイルを暗号化ZIPNo.04841
yoreyore さん 19/03/09 15:14
 
便乗ですみません

パスワード通知メール内に下記記述がある場合どこを編集すれば良いのでしょうか、
お手数ですがよろしくお願いいたします

暗号化された添付ファイル「201903091510.zip」の
パスワードは「*******」になります。


[ ]
RE:04841 添付ファイルを暗号化ZIPNo.04842
秀まるお2 さん 19/03/11 09:17
 
 形式追加してみました。

            $pattern[5] = "^.* パスワードは「([^ ]+?)」.*$";

 の所がいじった所になります。

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

//暗号化Zipの自動解凍 PasswordZipExtract.mac
// 2019.02.12
// 2019.03.07 Version 1.1 パスワードの形式追加。
// 2019.03.11 Version 1.2 パスワードの形式さらに追加。
//
// by 秀まるお
// hidesoft.8:04704| 暗号化zip自動解凍マクロ
//
//
//説明:
// このマクロはパスワード付きzipの添付ファイルを簡単に解凍する用のマクロです。
// パスワード付きzipの添付ファイル入りメールは、そのメールとは別便でパスワード
// を通知してきます。このマクロはその別便メールの中からパスワードを取り出して、
// 自動で解凍します。
//
// マクロを実行する前に、zip添付ファイル付きのメールとパスワード通知メールの
// 2通を選択して実行する必要があります。

//解凍したファイルは「ドキュメント」フォルダ配下のPasswordZipTempフォルダに
// 作成されます。古いファイルが残ってる場合はマクロ実行のタイミングで削除され
// てから解凍されます。
//

    loaddll "tkinfo.dll";

    // 秀丸メールの検索パック復元予約
    #n = dllfunc("AutoRestoreFindPack");

    // 秀丸エディタの検索条件復元予約
    setcompatiblemode 0x00020000;

    #n = dllfunc("SetJapaneseCodePageMode", 1);

    #n = dllfunc("SelectedMailCount");
    if( #n != 2 ) {
        message "このマクロは暗号化zip付きメールと、その解凍用パスワード通知
メールの2通を選択した状態で実行してください。";
        endmacro;
    }
    //対象のzipとパスワードを取り出す。
    $zipfile = "";
    $password = "";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        #foundzip = 0;
        if( $zipfile == "" ) {
            #count = dllfunc("CountCurrentHeader", "X-Attach");
            if( #count != 0 ) {
                #i = 0;
                while( #i < #count ) {
                    $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
                    $ext = dllfuncstr("ToLower", rightstr( $attach, 4 ) );
                    if( $ext == ".zip" ) {
                        $zipfile = dllfuncstr("HomeDir") + dllfuncstr("Curre
ntAccount") + "\\" + $attach;
                        #foundzip = 1;
                        break;
                    }
                    #i = #i + 1;
                }
            }
        }
        if( $password == "" && #foundzip == 0 ) {
            $text = gettext( 0, 0, 999, linecount );        //メール本文全部
            loaddll "HmJre.dll";
            $text = dllfuncstr("ReplaceRegularNoCaseSense", "[\\r\\n]+", $te
xt, 0, " ", 2);
                        //改行を空白に変換しておく。
            $text = dllfuncstr("ReplaceRegularNoCaseSense", " +", $text, 0,
 " ", 2);
                        //全角空白を半角空白に変換しておく。
            $text = $text + " ";        //末端に空白を付けておく。
           

            $pattern[0] = "^.* 【パスワード】[ ]*:?[ ]*([^ ]+?) .*$";
            $pattern[1] = "^.* 解凍パスワード[ ]*[::][ ]*([^ ]+?) .*$";
            $pattern[2] = "^.* Password[ ]*:[ ]*([^ ]+?) .*$";
            $pattern[3] = "^.* \\[パスワード/Password\\][ ]*([^ ]+?) .*$";
            $pattern[4] = "^.* 【暗号化パスワード\\(password\\)】[ ]*([^ ]
+?) .*$";
            $pattern[5] = "^.* パスワードは「([^ ]+?)」.*$";
            $pattern[6] = "^.* パスワード[ ]*[::][ ]*([^ ]+?) .*$";

            #iPattern = 0;
            while(1) {
                $pattern = $pattern[#iPattern];
                if( $pattern == "" ) {
                    break;
                }
                $password = dllfuncstr("ReplaceRegularNoCaseSense", $pattern,
 $text, 0, "\\1", 0);
                if( $password != "" ) {
                    break;
                }
                #iPattern = #iPattern + 1;
            }

            loaddll "tkinfo.dll";       //元に戻す。
        }
    }
    #n = dllfunc("UnlockSelection", 1);
    if( $zipfile == "" ) {
        message "zip形式ファイルが見つかりませんでした。";
        endmacro;
    }
    if( $password == "" ) {
        message "パスワードが見つかりませんでした。";
        endmacro;
    }

    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
    if( ! existfile( $7zip ) ) {
        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
        if( ! existfile( $7zip ) ) {
            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
            endmacro;
        }
    }
    openreg "CURRENTUSER","Software\\Microsoft\\Windows\\CurrentVersion\\Exp
lorer\\Shell Folders";
    $outfolder = getregstr("Personal");
    closereg;
    $outfolder = $outfolder + "\\PasswordZipTemp";

    runsync2 "cmd.exe /c rmdir /s /q \"" + $outfolder + "\"";       //古いフ
ァイルのゴミを削除
    #n = dllfunc("Bypass_CreateDirectory", $outfolder);
    $command = "\"" + $7zip + "\" x -p" + $password + " -o\"" + $outfolder +
 "\" \"" + $zipfile + "\"";
    runsync2 $command;
    if( !result ) {
        message "7zipの実行に失敗しました。";
        endmacro;
    }
    openbyshell $outfolder;

[ ]
RE:04842 添付ファイルを暗号化ZIPNo.04843
yoreyore さん 19/03/11 13:11
 
ありがとうございます。

解凍できるようになりました。

自分で6番目を作り触っていたのですがうまくいかなかったので
なんとなく わかったような気がします。

[ ]
RE:04843 添付ファイルを暗号化ZIPNo.04847
yoreyore さん 19/03/12 08:01
 
お世話になっております
新たな取引先の添付ファイルが解凍できませんでした。

$pattern[1] = "^.* 解凍パスワード[ ]*[::][ ]*([^ ]+?) .*$";
でできると思うのですが?です
お手数ですがよろしくお願いいたします。


添付ファイル付きメール内に

ご確認の程、よろしくお願い致します。

後ほど、ファイルの解凍パスワードを送付致します。


別便メールで

先ほど送付致しましたファイルの、パスワードを送付致します。

解凍パスワード xc*IZn6

ご確認の程、よろしくお願い致します。



[ ]
RE:04847 添付ファイルを暗号化ZIPNo.04849
秀まるお2 さん 19/03/12 09:02
 
 いろいろ形式があるようで・・。また直しました。

----------------------------------------------------------------------------
//暗号化Zipの自動解凍 PasswordZipExtract.mac
// 2019.02.12
// 2019.03.07 Version 1.1 パスワードの形式追加。
// 2019.03.12 Version 1.2 パスワードの形式さらに追加。
//
// by 秀まるお
// hidesoft.8:04704| 暗号化zip自動解凍マクロ
//
//
//説明:
// このマクロはパスワード付きzipの添付ファイルを簡単に解凍する用のマクロです。
// パスワード付きzipの添付ファイル入りメールは、そのメールとは別便でパスワード
// を通知してきます。このマクロはその別便メールの中からパスワードを取り出して、
// 自動で解凍します。
//
// マクロを実行する前に、zip添付ファイル付きのメールとパスワード通知メールの
// 2通を選択して実行する必要があります。

//解凍したファイルは「ドキュメント」フォルダ配下のPasswordZipTempフォルダに
// 作成されます。古いファイルが残ってる場合はマクロ実行のタイミングで削除され
// てから解凍されます。
//

    loaddll "tkinfo.dll";

    // 秀丸メールの検索パック復元予約
    #n = dllfunc("AutoRestoreFindPack");

    // 秀丸エディタの検索条件復元予約
    setcompatiblemode 0x00020000;

    #n = dllfunc("SetJapaneseCodePageMode", 1);

    #n = dllfunc("SelectedMailCount");
    if( #n != 2 ) {
        message "このマクロは暗号化zip付きメールと、その解凍用パスワード通知
メールの2通を選択した状態で実行してください。";
        endmacro;
    }
    //対象のzipとパスワードを取り出す。
    $zipfile = "";
    $password = "";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        #foundzip = 0;
        if( $zipfile == "" ) {
            #count = dllfunc("CountCurrentHeader", "X-Attach");
            if( #count != 0 ) {
                #i = 0;
                while( #i < #count ) {
                    $attach = dllfuncstr("CurrentHeader2", "X-Attach", #i);
                    $ext = dllfuncstr("ToLower", rightstr( $attach, 4 ) );
                    if( $ext == ".zip" ) {
                        $zipfile = dllfuncstr("HomeDir") + dllfuncstr("Curre
ntAccount") + "\\" + $attach;
                        #foundzip = 1;
                        break;
                    }
                    #i = #i + 1;
                }
            }
        }
        if( $password == "" && #foundzip == 0 ) {
            $text = gettext( 0, 0, 999, linecount );        //メール本文全部
            loaddll "HmJre.dll";
            $text = dllfuncstr("ReplaceRegularNoCaseSense", "[\\r\\n]+", $te
xt, 0, " ", 2);
                        //改行を空白に変換しておく。
            $text = dllfuncstr("ReplaceRegularNoCaseSense", " +", $text, 0,
 " ", 2);
                        //全角空白を半角空白に変換しておく。
            $text = $text + " ";        //末端に空白を付けておく。
           

            $pattern[0] = "^.* 【パスワード】[ ]*:?[ ]*([^ ]+?) .*$";
            $pattern[1] = "^.* 解凍パスワード[ ]*[::][ ]*([^ ]+?) .*$";
            $pattern[2] = "^.* Password[ ]*:[ ]*([^ ]+?) .*$";
            $pattern[3] = "^.* \\[パスワード/Password\\][ ]*([^ ]+?) .*$";
            $pattern[4] = "^.* 【暗号化パスワード\\(password\\)】[ ]*([^ ]
+?) .*$";
            $pattern[5] = "^.* パスワードは「([^ ]+?)」.*$";
            $pattern[6] = "^.* 解凍パスワード[ ]+([^ ]+?) .*$";
            $pattern[7] = "^.* パスワード[ ]*[::][ ]*([^ ]+?) .*$";

            #iPattern = 0;
            while(1) {
                $pattern = $pattern[#iPattern];
                if( $pattern == "" ) {
                    break;
                }
                $password = dllfuncstr("ReplaceRegularNoCaseSense", $pattern,
 $text, 0, "\\1", 0);
                if( $password != "" ) {
                    break;
                }
                #iPattern = #iPattern + 1;
            }

            loaddll "tkinfo.dll";       //元に戻す。
        }
    }
    #n = dllfunc("UnlockSelection", 1);
    if( $zipfile == "" ) {
        message "zip形式ファイルが見つかりませんでした。";
        endmacro;
    }
    if( $password == "" ) {
        message "パスワードが見つかりませんでした。";
        endmacro;
    }

    $7zip = "C:\\Program files\\7-Zip\\7z.exe";
    if( ! existfile( $7zip ) ) {
        $7zip = "C:\\Program files (x86)\\7-Zip\\7z.exe";
        if( ! existfile( $7zip ) ) {
            message "7-Zipのプログラム用ファイルが見つかりません。7-Zipをイ
ンストールしてください。\n\n" +
                    "7-Zipは、C:\\Program files\\7-Zip またはC:\\Program fil
es (x86)\\7-Zip にインストールされてる必要があります。";
            endmacro;
        }
    }
    openreg "CURRENTUSER","Software\\Microsoft\\Windows\\CurrentVersion\\Exp
lorer\\Shell Folders";
    $outfolder = getregstr("Personal");
    closereg;
    $outfolder = $outfolder + "\\PasswordZipTemp";

    runsync2 "cmd.exe /c rmdir /s /q \"" + $outfolder + "\"";       //古いフ
ァイルのゴミを削除
    #n = dllfunc("Bypass_CreateDirectory", $outfolder);
    $command = "\"" + $7zip + "\" x -p" + $password + " -o\"" + $outfolder +
 "\" \"" + $zipfile + "\"";
    runsync2 $command;
    if( !result ) {
        message "7zipの実行に失敗しました。";
        endmacro;
    }
    openbyshell $outfolder;

[ ]
RE:04849 添付ファイルを暗号化ZIPNo.04855
yoreyore さん 19/03/12 19:30
 
ありがとうございます。

[ ]