署名の仕分けNo.03623
旧姓山下 さん 13/03/28 09:52
 
こんにちは

秀丸メールの署名についてお尋ねします.ヘルプを見ましたができそうにないように
思いましたので,確認させて頂きたいと存じます.

今,秀丸メールで2つのメールアカウントを登録しています.これをA,Bとします.
また,署名として5つ登録しています.これを(あ)(い)(う)(え)(お)とし
ます.

アカウントAでは署名(あ)(い)(お)を使うことはあるけれど,(う)や(え)
を使うことはない.

アカウントBでは署名(う)(え)(お)を使うことはあるけれど,(あ)や(い)
を使うことはない.

という状況です.使用頻度はアカウントAが圧倒的に多く,署名としても(あ)の使
用が圧倒的です.そのため,署名選択の際に(あ)を選ぶことが半ば癖になっており,
アカウントBを使うときもうっかり(あ)を選んでしまうことがあります.送信ボタ
ンを押した瞬間に気づくのですが,どうにもなりません.

そこで質問ですが,アカウントAを使用しているときは「署名切り替え」ボタンを押
しても(あ)と(い)と(お)しか現れず,アカウントBでは(う)と(え)と
(お)しか現れない,というように,アカウントごとに署名の出現を制限させるよう
な設定はできませんでしょうか.

私のうっかりミスをなくすのが一番効果的なのですが,秀丸メール側にサポート機能
があるかを知りたく,お尋ねさせて頂きました.

以上,よろしくお願い致します.

[ ]
RE:03623 署名の仕分けNo.03625
秀まるお さん 13/03/28 10:16
 
 特定アカウントの場合は特定の署名しか表示しないような機能は、すみません
がありません。

 現状でなんとかするとしたら、署名の中でテンプレート命令を使う作戦か、マ
クロを使ってミスを防ぐ作戦かになるか、またはフォルダ毎設定を使って署名を
自動で切り替わるようにする作戦があるかと思います。

■テンプレート命令を使う作戦

 例えば署名の中に直接ご自身のメールアドレスを入れてるとしたら、そこを、

  $(SetEmailOnly,$(CurrentHeader,From))

 にするとかの作戦があります。そうすれば、万が一ミスっても被害はそんなに
無いです。こういうテンプレート命令を使えば、現状で5種類使い分けてる署名
も、もっと少なくて済むんじゃないかと思います。

■マクロでチェックする作戦

 例えば「このアカウントに対してこの署名はありえない」って組み合わせがあ
るとしたら、それをマクロでチェックすることは出来ます。

 例えば"アカウント1"に対して"署名2"が選択されてるのがダメだとしたら、

    loaddll "tkinfo.dll";
    $account = dllfuncstr("CurrentAccount");
    $sign = dllfuncstr("CurrrentSignName");
    if( $account == "アカウント1" ) {
        if( $sign == "署名2" ) {
            message "アカウント1に署名2が選択されてます。";
            #n = dllfunc("SetCancel", 1);
            endmacro;
        }
    }

 みたいなマクロを作って、それを「あとで送信/今すぐ送信時」の自動起動マ
クロとして登録しておくとかがあります。

■フォルダ毎設定で署名を指定しておく作戦

 例えば誰かに返信する時はこの署名っていうのが決まってるとしたら、例えば
そういうメールだけ特定のフォルダに振り分けるようにしておいて、そのフォル
ダのフォルダ毎設定での「テンプレート/署名」ページにて、それ用の署名を指
定しておくといいです。

 そうすれば、いちいち署名を切り替える手間がいらなくなって便利です。

 ということでどうでしょうか。というか、現状ではそういう使い方の工夫でや
っていただくしか無いかなぁと思います。

[ ]
RE:03625 署名の仕分けNo.03627
旧姓山下 さん 13/03/29 09:58
 
秀まるお様

ご回答ありがとうございました.

3通りの方法をご教示頂きましたが,希望を叶えるためには,現状ではマクロ利用が
一番よさそうです.

ただ,試してみたところ,エラーが出ました.他に質問等もありますので,お手数で
すがまたご教示下さい.

まずエラーですが,こんなマクロにしました.ほぼ教えて頂いた通りですが.

loaddll "tkinfo.dll";
$account = dllfuncstr("CurrentAccount");
$sign = dllfuncstr("CurrrentSignName");
if( $account == "アカウントA" ) {
 if( $sign == "(う)" || $sign == "(え)" ) {
  message "不適当な署名が選択されてます。";
  #n = dllfunc("SetCancel", 1);
  endmacro;
 }
}
if( $account == "アカウントB" ) {
 if( $sign == "(あ)" || $sign == "(い)" ) {
  message "不適当な署名が選択されてます。";
  #n = dllfunc("SetCancel", 1);
  endmacro;
 }
}

これを「shomeicheck.mac」という名前にして,秀丸エディタのマクロを置いておく
場所に置き,秀丸メールにて
 マクロ→マクロ登録→自動起動→あとで送信/今すぐ送信時
とたどり,そこに「shomeicheck.mac」を登録しました.

ここで,アカウントAや(あ)は最初に私が質問したときに用いたものですが,実際
には,アカウントは
 設定→アカウント毎の設定→個人情報→アカウント名(ハードディスク上に…)
に書かれているもの(メールアドレスそのものに見えますが)

署名は
 設定→アカウント毎の設定→テンプレート/署名→テンプレート/署名の編集→署名
の名前に書かれているものを書きました.


さて,アカウントBから敢えて署名(あ)を用いてメールを送信しようとしたところ,
次のようなエラーがでました.


dullfunc関数で指定された呼び出し先が見つかりません.

エラー箇所の内容(変換した内容)

$sign = dllfuncstr("CurrrentSignName");
if( $account == "アカウントA" ) {


何が間違っているのでしょうか.



次いで,質問です.

秀丸メールのマクロは秀丸エディタのマクロ置場に置く,ということだそうですが,
秀丸メール持ち出しキットを使っている場合,外出先ではこのマクロが使えないとい
うことなのでしょうか.

実験で失敗しているので分からないのですが,もし署名を間違えてマクロで引っかか
った場合,送ろうと書いた文章は消えてしまうのでしょうか(エディタが強制終了し
てしまうのでしょうか).

以上,長くなって恐縮ですが,よろしくお願い致します.


[ ]
RE:03627 署名の仕分けNo.03628
秀まるお さん 13/03/29 11:50
 
 すみません。サンプルマクロがスペルミスしてました。

> $sign = dllfuncstr("CurrrentSignName");

 CurrrentSignNameじゃなくて、CurrentSignNameでした。そこだけ直せば大丈
夫なはずです。

 他に、電子署名を選択するのをマクロで作ってしまう作戦もありかと思います。
せっかくなので作ってみました。

----------電子署名を選択するマクロの例---------------------
    loaddll "tkinfo.dll";
    #i = 0;
    while(1) {
        $sign[#i] = dllfuncstr("GetTemplateName", "sign", #i);
        if( $sign[#i] == "" ) {
            break;
        }
        #i = #i + 1;
    }
    #signcount = #i;
    $account = dllfuncstr("CurrentAccount");
    if( $account == "アカウントA" ) {
        call DeleteSign "\t(え)\t(お)\t";
                // \tで区切って指定。先頭と最後にも\tが必要。
    } else if( $account == "アカウントB" ) {
        call DeleteSign "\t(あ)\t(い)\t";
                // \tで区切って指定。先頭と最後にも\tが必要。
    }
    if( #signcount == 0 ) {
        message "署名がありません。";
        endmacro;
    }
    menuarray $sign, #signcount;
    #result = result;
    if( #result >= 1 ) {
        #n = dllfunc("SwitchSign", $sign[#result-1]);
    }
    endmacro;

DeleteSign:
    message $$1;
    ##i = 0;
    ##dest = 0;
    while(##i < #signcount) {
        message "\t" + $sign[##i] + "\t";
        if( strstr( $$1, "\t" + $sign[##i] + "\t" ) < 0 ) {
            $sign[##dest] = $sign[##i];
            ##dest = ##dest + 1;
        }
        ##i = ##i + 1;
    }
    #signcount = ##dest;
    return;

[ ]
RE:03627 署名の仕分けNo.03629
秀まるお さん 13/03/29 19:22
 
 お返事忘れてました。

> 秀丸メールのマクロは秀丸エディタのマクロ置場に置く,ということだそうですが,
> 秀丸メール持ち出しキットを使っている場合,外出先ではこのマクロが使えないとい
> うことなのでしょうか.

 マクロ用のフォルダを持ち出し用のメディア上にしておけば使えるはずです。

 マクロ用のフォルダは、「設定・秀丸エディタの動作環境...」の「環境」
ページで指定します。そこに、例えばUSB接続メディアがX:ドライブなら、

   X:\macro

 みたいにドライブ名も含めて完全なパス名を指定すれば大丈夫です。

 もしも持ち出した先でUSB接続メディアのドライブ名がY:になったら、マクロ
用フォルダのドライブ名も自動的に「Y:」に切り替わるはずです。

[ ]
RE:03629 署名の仕分けNo.03630
旧姓山下 さん 13/03/29 22:29
 
秀まるお様

たびたびのご回答ありがとうございました.

1)まず最初に教えて頂いたマクロですが,ミススペルを直したら動きました.

ただ,これは「署名切り替え」ボタンを押し,「カーソル位置に挿入」を経由して入
れた誤署名はチェックしませんね.これもチェックすることはできないものでしょう
か.

通常の署名(「署名切り替え」ボタンを押して出たリストから選んだ署名)に対して
は間違いを検出してくれました.

通常の署名はメールの最後につきますが,わたしは過去の引用の前に署名を入れたい
ため,普段は「カーソル位置に挿入」で署名を入れています.



2)マクロ登録フォルダについて,

> マクロ用のフォルダを持ち出し用のメディア上にしておけば使えるはずです。

とご回答頂きました.

先に書かなくて申し訳ありませんでしたが,持ち出しキットを使っているのは秀丸
メールだけで,秀丸エディタはPCにインストールした状態で使っています.つまり,
秀丸エディタ関連のファイルはすべて C ドライブ内にあります.これを USB メモリ
に移すと,USB メモリを差さなければ秀丸エディタでマクロが使えないということに
なり,秀丸エディタが使い難くなるように思います.



3)新たに教えて頂いたマクロも試してみました.色んなことができますね.

このマクロを
 マクロ→マクロ登録→自動起動→あとで送信/今すぐ送信時
に登録して試してみました.動くには動いたのですが,これは通常の動作なのか疑問
に思いましたので,確認させて下さい.

アカウントBからメールを送るとします.ここで署名を何も入れずに送信ボタンを押
すと,
(あ)(い)
と書かれたウインドウが出ます.OK を押すと
(あ)
と書かれたウインドウが出ます.OK を押すと
(い)
と書かれたウインドウが出ます.OK を押すと
(う)
と書かれたウインドウが出ます.OK を押すと
(え)
と書かれたウインドウが出ます.OK を押すと
(あ)
(い)
(う)
(え)
と書かれたメニューが出ます.

ここでメニューから署名を選択すれば,選択した署名が書かれてメールが送信されま
す.メニューの外をクリックすると,署名が何も選択されずにメールが送信されます.
妙な動きのように思います.

実験のため他人には送らず,アカウントBからアカウントAに送る(自分の別のアカウ
ントに送る)ということをしたのですが,それが原因なのでしょうか.

以上,また長い文章で申し訳ありません.

[ ]
RE:03630 署名の仕分けNo.03631
秀まるお さん 13/03/30 09:37
 
> ただ,これは「署名切り替え」ボタンを押し,「カーソル位置に挿入」を経由して入
> れた誤署名はチェックしませんね.これもチェックすることはできないものでしょう
> か.

 署名を「カーソル位置に挿入」とした場合は、すみませんが考えてませんでし
た。

 「カーソル位置に挿入」とした場合は、単純に文字列を挿入したのと同じなの
で、それをチェックするとしたら、文字列を検索して調べるしか無いです。

 例えば、署名の中に「斉藤秀夫の署名」という文字があったとしたら、

   $account = dllfuncstr("CurrentAccount");
   if( $account == "アカウントA" ) {
       gofiletop;
       searchdown2 "斉藤秀夫の署名";
       if( result == yes ) {
           message "アカウントAにあってはならない署名があります。";
       }
   }

 とか、そんな感じで判定するしか無いと思います。

> 先に書かなくて申し訳ありませんでしたが,持ち出しキットを使っているのは秀丸
> メールだけで,秀丸エディタはPCにインストールした状態で使っています.つまり,
> 秀丸エディタ関連のファイルはすべて C ドライブ内にあります.これを USB メモリ
> に移すと,USB メモリを差さなければ秀丸エディタでマクロが使えないということに
> なり,秀丸エディタが使い難くなるように思います.

 秀丸メールが持ち出し用で動作してる場合は、秀丸メール上で「設定・秀丸エ
ディタの動作環境」を実行した場合、それはハードディスク上にインストールさ
れてる秀丸エディタとはまったく別に設定されるはずです。

 とりあえず一度、秀丸メール上で「設定・秀丸エディタの動作環境...」でマ
クロ用フォルダを指定してみてテストしてみてほしいです。それでダメでしたら、
こちらで一回動作検証してみます。

> このマクロを
>  マクロ→マクロ登録→自動起動→あとで送信/今すぐ送信時
> に登録して試してみました.

 こっちのマクロは、署名を選択する用のマクロですので、自動登録に登録して
使ったらおかしなことになります。

 署名を入れたいなぁと思ったら、署名を選択する用のコマンドを実行する代わ
りにこっちのマクロを使ったらどうか、という話になります。でも、どっちにし
ても「カーソル位置に挿入」としてるのなら、このマクロではダメなことになり
ます。

[ ]
RE:03631 署名の仕分けNo.03632
旧姓山下 さん 13/03/30 16:11
 
秀まるお様

たびたびのご回答ありがとうございます.

(1)まずは「設定」→「秀丸エディタの動作環境」を試してみました.

確かに,秀丸エディタとは別にマクロ用フォルダを設定できました.

ただし,これは仕様なのかもしれませんが,動きがおかしい気がします.

あ)秀丸メール本体(?)の「マクロ」→「マクロ登録」で件の署名マクロを設定し
ました(署名マクロは秀丸メール用のマクロフォルダ内:USB メモリ内).メニュー
の「マクロ」には「署名マクロ」が出ています(秀丸エディタで設定していたマクロ
は出ていません).

い)新たにメールを作成するためエディタを開いたところ,「マクロ」には秀丸エデ
ィタで設定したマクロが出ています.ただし,「マクロ登録」としてみると,下部の
「マクロファイル用のフォルダ」としては,USB メモリ内のフォルダが指定されてい
ます.

う)メール作成用のエディタの「マクロ登録」ですべてのマクロを削除し,署名マク
ロを設定しました.

え)署名マクロ(マクロ1)を実行しました.

お)もう一度署名マクロを実行しようとしました.すると,

ファイルのパス(ファイルを含んでいるはずのフォルダ自体)が存在しません.
ファイル名= \「USB メモリのフォルダ」\「秀丸エディタのマクロ1」

というエラーメッセージがでました.

か)改めてエディタで「マクロ登録」を見てみると,(い)の状態に戻っています.
(秀丸メール本体のマクロは「署名マクロ」が出ています)

き)秀丸エディタを起動させ,「マクロ登録」を見てみたところ,下部の「マクロフ
ァイル用のフォルダ」としては昔ながらの C ドライブのフォルダが出ています.

要するに,秀丸メールでマクロ用フォルダを変更しても,メール用エディタの登録マ
クロとしては,フォルダは変更されているけれどマクロは秀丸エディタに登録したも
のが並ぶという状況のようです.かつ,秀丸メール用にマクロを登録し直しても,一
度そのマクロを実行するとリストは元に戻るようです.

当然ながら,秀丸メールのマクロ用フォルダの中身は秀丸エディタ用のものと違いま
すので,敢えて秀丸メール側でマクロを起動させようとすると,「ファイルが見つか
りません」というエラーが出てきます.


(2)署名作成のマクロですが,自動起動から外し,通常のマクロとして登録しまし
た.ただし,上述の通りエディタ側ではマクロリストが元に戻ってしまうので,リス
トを全削除し,署名マクロを登録して直ちに実行しました.

結果としては,動き自体は先に書いた通りで変わらず,アカウントAでは署名(あ)
(い)(お)のどれかに限定する,という機能はなさそうです.


(3)文字列を検索して署名の適否をチェックするマクロですが,教えて頂いた見本
を参考に,次のようなものを作ってみました.

loaddll "tkinfo.dll";
$account = dllfuncstr("CurrentAccount");
if( $account == "アカウントA" ) {
 gofiletop;
 searchdown2 "アカウントB";
 if( result == yes ) {
     message "不適切な署名です";
 endmacro;
 }
 gofiletop;
 searchdown2 "自宅住所";
 if( result == yes ) {
     message "不適切な署名です";
 endmacro;
 }
}
if( $account == "アカウントB" ) {
 gofiletop;
 searchdown2 "アカウントA"";
 if( result == yes ) {
     message "不適切な署名です";
 endmacro;
 }
}

なお,1行目は先に教えて頂いたものを参考に私が加えたものです.なしだとエラー
が出ましたので.3つある endmacro; も,なくてもエラーは出ませんでしたが,私
が加えたものです.

アカウントAにおいてはメール中に「アカウントB」や自宅住所が出てこないはずな
ので,このどちらが出ても不適切と判断する.

アカウントBにおいてはメール中に「アカウントA」が出てこないはずなので,これ
が出たら不適切と判断する.

という考え方です.結果として,

式がおかしいです.または,このバージョンではこの式は使えません.

というエラーメッセージが出てきました.

アルゴリズムとしてはこれでいいように思うのですが,どこがいけないのでしょうか.


以上,お手数ですが,再度ご教示お願い致します.

[ ]
RE:03632 署名の仕分けNo.03633
旧姓山下 さん 13/03/30 16:18
 
秀まるお様

先のコメント投稿直後にエラーの原因を1つ見つけました.

(3)で作成したマクロの最後の方の

searchdown2 "アカウントA"";

で,ダブルクオーテーションが1つ余計でした.これを削除したら,きちんと動きま
した.

[ ]
RE:03632 署名の仕分けNo.03638
秀まるお さん 13/03/31 22:08
 
 持ち出し用秀丸メールでのマクロファイル用のパスの指定がうまくいかないよ
うで…、お手数かけてすみません。

 明日、ちゃんとしたテスト環境を作ってテストしてみます。少々お待ちくださ
い。

[ ]
RE:03632 署名の仕分けNo.03640
秀まるお さん 13/04/01 10:57
 
 テストしてて、1つダメなパターンがありました。

 秀丸メールでの「マクロ・マクロ登録...」の「エディタ側」ページに、

 ○秀丸エディタのマクロメニューをそのまま出す
 ○秀丸メール側で指定する

 の設定があるんですが、そこが「秀丸エディタのマクロメニューをそのまま出
す」になっていて、さらに、秀丸エディタの方でのマクロの登録のされた方が、
フルパス指定、例えば

   test.mac

 のようにファイル名のみを指定するんじゃなくて、

   x:\macro\test.mac

 のようにフルパス指定になっているとダメでした。そういう指定がされてると、
そこのパス名の中にある「x:\」の部分が自動的に持ち出し用ドライブに書き換
える処理が働かなくて、うまくいかないようです。

 とりあえず、先ほどの「マクロ・マクロ登録・エディタ側」の設定を「秀丸
メール側で指定する」にするか、またはマクロファイル名の指定はあくまでファ
イル名のみで、「x:\」のようなパス名の指定は無しにしてほしいです。

 こちらでテストした限りでは、それで回避出来るはずだと思います。

[ ]
RE:03640 署名の仕分けNo.03642
旧姓山下 さん 13/04/01 17:29
 
秀まるお様

何度も何度もありがとうございます.

まず,マクロ登録の件ですが,教えて頂いた方法でうまくいきました.秀丸メールと
秀丸エディタ,それぞれマクロ置場も別で,登録されているマクロも別と認識してく
れるようになりました.


長々とお尋ねしていた件ですが,週末にこちらの会議室で h-tom 様や PineCone 様
に教えて頂いたり,ライブラリのマクロを参考にしたりしながら,次のような形にま
とめてみました.動きとしては多分大丈夫だと思いますが,何か改善のアドバイスな
どありましたら,お願い致します.

アカウントAを
"AAaa@usodomain.uso.jpjp"

アカウントBを
"BBbb@tekitoda.ne.jpjp"

アカウントAでの使用を前提とした署名(あ)を

:-) :-) :-) :-) :-) :-) :-) :-)
苗字 英 (Ei MYOJI)
"AAaa@usodomain.uso.jpjp"
m( )m m( )m m( )m m( )m m( )m

同じく署名(い)を

:-) :-) :-) :-) :-) :-) :-) :-)
苗字 英 (Ei MYOJI)
"AAaa@usodomain.uso.jpjp"
(株)うそだらけ
m( )m m( )m m( )m m( )m m( )m


アカウントBでの使用を前提とした署名(う)を

>>>>>>>>>>>>>>>>>>>>>>>>>
BB山下
"BBbb@tekitoda.ne.jpjp"
<<<<<<<<<<<<<<<<<<<<<<<<<

同じく署名(え)を

>>>>>>>>>>>>>>>>>>>>>>>>>
BB山下
ぷりぷり県ゴーゴー市
<<<<<<<<<<<<<<<<<<<<<<<<<

とします.ただし,実際にはアカウントは「"」で囲まれていません.そして,次の
マクロを「自動起動」の「あとで送信/今すぐ送信時」に登録します.

loaddll "tkinfo.dll";
$account = dllfuncstr("CurrentAccount");
if( $account == "AAaa@usodomain.uso.jpjp" ) {
 gofiletop;
 searchdown2 "^BBbb@tekitoda\\.ne\\.jpjp\\n<{25}", regular;
 #r1 = result;
 gofiletop;
 searchdown2 "^ぷりぷり県ゴーゴー市\\n<{25}", regular;
 if( #r1 || result == yes ) {
     message "このアカウントには不適切な署名です.";
  #n = dllfunc("SetCancel", 1); // 送信中止
  endmacro;
 }
}
if( $account == "BBbb@tekitoda.ne.jpjp" ) {
 gofiletop;
 searchdown2 "MYOJI\\)\\nAAaa@usodomain\\.uso\\.jpjp", regular;
 if( result == yes ) {
     message "このアカウントには不適切な署名です.";
  #n = dllfunc("SetCancel", 1); // 送信中止
  endmacro;
 }
}

不適切な「署名」だけに反応するように,すなわち,何らかの都合でアカウントAか
らのメールにアカウントBを書かなければならなくなったり,自宅住所を書かなけれ
ばならなくなったりしても,署名の形でなければ通すようにしたつもりです.

[ ]