メール誤送信BCC対策No.08195
f-saito さん 21/05/21 15:27
 
会社で秀丸メールを使っていていつもお世話になっております。

先日社内で起きたメール誤送信の事例なのですが、複数の宛先でBCCとすべき送信先
にCCで送ってしまって、他の方通しのメールアドレスが見えてしまい、クレームが来
て気づいたという事例です。

これを防ぐために有効なアラート設定か機能はないでしょうか?

お手数ですが、アドバイス頂けたら幸いです。


[ ]
RE:08195 メール誤送信BCC対策No.08196
秀まるお2 さん 21/05/21 16:16
 
 一応、標準の誤送信対策として、「全般的な設定・上級者向け・確認メッセージ」
の中の、

 □ あとで送信/今すぐ送信時の宛先の確認

 って設定があります。さらに、そこにある「宛先1つ1つをチェックマークで確認
する」とかいろいろある設定でなんとかするのが1つの手としてあります。

 あと、【全般的な設定・送受信・詳細」の

 □ 「今すぐ送信」時の最後に待ち時間を入れる
 □ 送信コマンド実行時に、実際の送信前に待機時間を入れる

 なども誤送信対策になります。

 もっと難しい条件で警告を出す、またはそもそも送信させないようにするためには、
マクロを作るやり方があります。例えば今回のケースはBcc:ヘッダに入れるべき宛先
がCc:に入っていたということで、例えば特定のメールアドレスがTo:/Cc:にあった場
合は送信させないとか、あるいは特定のメールアドレスがちゃんとBcc:に入ってなけ
れば送信させないとか、そういうマクロを作る作戦が考えられます。

 マクロのサンプルは作って差し上げてもいいです。例えば具体的にどういうメール
アドレスがどこにあったらダメとか、その辺の条件を教えていただければ出来ると思
います。
 (メールアドレス自体は伏せ字で教えてくれればいい。)

[ ]
RE:08196 メール誤送信BCC対策No.08197
f-saito さん 21/05/21 18:52
 
早速の回答ありがとうございます。

頂いた2つの対策設定は、した上でのインシデントでした。

マクロについてはありがたいです。

宛先は毎回変わるので、条件をどのように設定すればよいか社内で検討してみます。

[ ]
RE:08197 メール誤送信BCC対策No.08198
f-saito さん 21/05/24 10:25
 
マクロのサンプルですが、以下の条件で作成頂けますでしょうか?

・アドレス帳に登録されていないもので送信先かCCに複数(できれば社外宛の)アド
レスで送信されたときに「宛先をBCCに変更しなくても誤送信になりませんか?」の
確認メッセージを出して、送信を「キャンセル」と「OK」ボタンで選択できるような
機能

[ ]
RE:08198 メール誤送信BCC対策No.08199
秀まるお2 さん 21/05/24 14:00
 
 To:ヘッダとCc:ヘッダで指定してる宛先の合計が2つ以上で、その中に1つでもア
ドレス帳に登録してないアドレスがあった場合に警告表示するって仕様にしてみまし
た。

 「マクロ・マクロ登録...」の「自動起動」ページの中の「あとで送信/今すぐ送信
時」に登録して使う形になります。

 もしも「アドレス帳に登録されてなくて、しかも社外なら」って条件にするなら、

  $book = dllfuncstr("FindBook", $one);
        if( $book == "" ) {     //登録されてない場合

 の所を

        $book = dllfuncstr("FindBook", $one);
        $emailone = dllfuncstr("ToLower", dllfuncstr("SetEmailOnly", $one));
        if( $book == ""         //登録されてない場合
         && strstr( $emailone, "@hogehoge.co.jp" ) < 0      //社外なら
         ) {

 みたいにするといいです。

 何か別の仕様がご希望だったとしたらまた連絡ください。


-----------------------------------------------------------------------------
    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "To");
    $cc = dllfuncstr("CurrentHeaderUnited", "Cc");
    if( $cc != "" ) {
        if( $to != "" ) {
            $to = $to + ",";
        }
        $to = $to + $cc;        //宛先全部ひっくるめる。
    }
    #toCount = dllfunc("CountEmailList", $to);
    if( #toCount <= 1 ) {
        //宛先が1つ以下なら何もしない
        endmacro;
    }
    #i = 0;
    $message = "";
    while( #i < #toCount ) {
        $one = dllfuncstr("GetEmailList", $to, #i);
        $book = dllfuncstr("FindBook", $one);
        if( $book == "" ) {     //登録されてない場合
            if( $message != "" ) {
                $message = $message + "\n";
            }
            $message = $message + $one;
        }
        #i = #i + 1;
    }
    if( $message != "" ) {
        #n = dllfunc("SetCancel", 1);       //送信不可としておく。(とりあえ
ず)
        $message = "アドレス帳に登録してないメールアドレスを含んでいて、" +
                   "しかも複数の宛先にメールを送信しようとしています。" +
                   "かまわずに送信しますか?\n\n" +
                   "アドレス帳に登録してないアドレス = \n"
                + $message;
        #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0), $message
                , "宛先の確認"
                , 0x30      //警告
                + 3         //はい + いいえ + キャンセル
                + 0x100     // デフォルトを2番目のボタン
                );
        if( #n == 6 ) {     //「はい」なら送信OK
            #n = dllfunc("SetCancel", 0);
        }
    }

[ ]
RE:08199 メール誤送信BCC対策No.08200
f-saito さん 21/05/24 16:14
 
素早いご対応、感謝いたします。

試しにいろいろ動かしてみます。

[ ]
RE:08200 メール誤送信BCC対策No.08228
f-saito さん 21/06/07 11:24
 
  $book = dllfuncstr("FindBook", $one);
        if( $book == "" ) {     //登録されてない場合

 の所を

        $book = dllfuncstr("FindBook", $one);
        $emailone = dllfuncstr("ToLower", dllfuncstr("SetEmailOnly", $one));
        if( $book == ""         //登録されてない場合
         && strstr( $emailone, "@hogehoge.co.jp" ) < 0      //社外なら
         ) {

 みたいにするといいです。


上記を入れて動作検証してみたのですが、社内のメールが複数でもアラートメッセー
ジが出ます。
これを社外のメールが複数のときだけアラートメッセージを出したいのですが、どこ
を直せば良いでしょうか?

[ ]
RE:08228 メール誤送信BCC対策No.08229
秀まるお2 さん 21/06/07 15:16
 
 こちらでテストした限りでは、例えば

To: "a@hogehoge.co.jp", "b@hogehoge.co.jp"

 みたいな感じでメールを送ろうとして警告は出ないようです。
 (ここの会議室に書き込む用に""で囲ってますが、実際には""で囲ってません)

         && strstr( $emailone, "@hogehoge.co.jp" ) < 0      //社外なら

 の所は実際にはご自身の会社のメールアドレスの物を入れないといけなくて、例え
ばうちの会社なら

         && strstr( $emailone, "@maruo.co.jp" ) < 0      //社外なら

 のようにします。その辺の書き方は僕には分からないのですが、もしうまくいかな
いようでしたら、"maruo@mitene.or.jp"に、具体的にそちらの会社名および社員の
メールアドレスがどういう形式になってるのかの例なども含めて連絡いただければ、
具体的なマクロの例を書いてお返事することは出来ると思います。

-----------------------------------------------
マクロのサンプル
-----------------------------------------------
    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "To");
    $cc = dllfuncstr("CurrentHeaderUnited", "Cc");
    if( $cc != "" ) {
        if( $to != "" ) {
            $to = $to + ",";
        }
        $to = $to + $cc;        //宛先全部ひっくるめる。
    }
    #toCount = dllfunc("CountEmailList", $to);
    if( #toCount <= 1 ) {
        //宛先が1つ以下なら何もしない
        endmacro;
    }
    #i = 0;
    $message = "";
    while( #i < #toCount ) {
        $one = dllfuncstr("GetEmailList", $to, #i);
        $book = dllfuncstr("FindBook", $one);
        $emailone = dllfuncstr("ToLower", dllfuncstr("SetEmailOnly", $one));
        if( $book == ""         //登録されてない場合
         && strstr( $emailone, "@hogehoge.co.jp" ) < 0      //社外なら
         ) {
            if( $message != "" ) {
                $message = $message + "\n";
            }
            $message = $message + $one;
        }
        #i = #i + 1;
    }
    if( $message != "" ) {
        #n = dllfunc("SetCancel", 1);       //送信不可としておく。(とりあえ
ず)
        $message = "アドレス帳に登録してないメールアドレスを含んでいて、" +
                   "しかも複数の宛先にメールを送信しようとしています。" +
                   "かまわずに送信しますか?\n\n" +
                   "アドレス帳に登録してないアドレス = \n"
                + $message;
        #n = dllfunc("Bypass_MessageBox", hidemaruhandle(0), $message
                , "宛先の確認"
                , 0x30      //警告
                + 3         //はい + いいえ + キャンセル
                + 0x100     // デフォルトを2番目のボタン
                );
        if( #n == 6 ) {     //「はい」なら送信OK
            #n = dllfunc("SetCancel", 0);
        }
    }

[ ]