送信済みメールを送信元のフォルダに保存No.00398
hajime さん 09/02/08 19:28
 
山紫水明さま
やはり、誤振り分けが生じます
マクロの動作を追うことが出来ていませんが
発生条件はだいたいつめられましたのでご報告申し上げます。

環境
Vista
hmmVer.5.15
送信済みメールを送信元のフォルダに保存するマクロVer.1.08
 送受信の開始直前 に登録
 #confirm = 0;
 #time = 1000;
 #filter = 0;
 #wait = 1;
 #alltransmit = 1;
 #recover = 1;
エディタ起動時に発信フォルダ名をヘッダに追加するマクロ
 送信用エディタ起動時 に登録

再現手順
1;フォルダAのメールaに返信編集開始
2;参照の必要性からフォルダBのメールbにフォーカス移動
3;メールa送信
  メールaに、自動振り分けでゴミ箱直行が適用される
マクロ動作1;message "振り分け設定などに従いました。";
マクロ動作2;message "送信済みメールを "
       + $rootfolderb + " に保存しました。";
マクロ動作3;メールbをフォルダAに移動★!
マクロ動作4;フォルダAを表示

表示が早いときなどは
どちらか一方のメッセージしか表示されないときもありますが、
誤振り分けは、自動振り分け設定がされているときに生じます。
なかなか気づかなかったのは、
送信済みメールが誤振り分けされるのではなく
たまたまフォーカスのあったメールbが動いてしまうためです。

誤振り分けの問題は解決したかと思っていたんですが、
まだマクロを十分理解できていません。メールの移動が、
反映されるタイミングがマクロの記述の順序と違ったように
思うのですが・・・

[ ]
RE:00398 送信済みメールを送信元のフォルNo.00399
山紫水明 さん 09/02/09 22:25
 
 hajimeさん,

 手順通りやってみましたが,確認できませんでした。何か他の要因があるのか
も知れません。
 ちなみに,#wait の値を大きめにとっても状況は変わりませんか?

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00399 送信済みメールを送信元のフォルNo.00400
hajime さん 09/02/12 02:58
 
> 手順通りやってみましたが,確認できませんでした。何か他の要因があるのか
>も知れません。
設定でしょうか。
XPでも再現します。何れも脆弱な処理能力のPCですが。
> ちなみに,#wait の値を大きめにとっても状況は変わりませんか?
100にしても、変わりません。

もう少し動きを観察してみたところ。
マクロ動作1;message "振り分け設定などに従いました。";
マクロ動作2;しばらく検索している
マクロ動作3;message "送信済みメールを "
       + $rootfolderb + " に保存しました。";
マクロ動作4;「OK」のボタンの表示
      (背景はフォルダBのメールbにフォーカス)
   操作 ;OKのクリック
マクロ動作5;メールbをフォルダAに移動
      (フォルダBからメールbが消える)
マクロ動作6;フォルダAを表示
      (ただし、メールbにフォーカスが行くわけではないので
       ソート条件で近隣に移動していないと見つけにくい)

という感じです。


[ ]
RE:00400 送信済みメールを送信元のフォルNo.00402
山紫水明 さん 09/02/13 20:00
 
 hajimeさん,

手順の確認ですが,
>1;フォルダAのメールaに返信編集開始
>2;参照の必要性からフォルダBのメールbにフォーカス移動
>3;メールa送信

 この3の送信は,いったんメールaのエディタに戻って「今すぐ送信」ボタンを押
すのですよね。
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00402 送信済みメールを送信元のフォルNo.00403
hajime さん 09/02/14 19:30
 
>手順の確認ですが,
>>1;フォルダAのメールaに返信編集開始
>>2;参照の必要性からフォルダBのメールbにフォーカス移動
>>3;メールa送信
>
> この3の送信は,いったんメールaのエディタに戻って「今すぐ送信」ボタンを押
>すのですよね。

はい。そうです。
何か調べるべきポイントがありましょうか。

[ ]
RE:00403 送信済みメールを送信元のフォルNo.00404
山紫水明 さん 09/02/15 18:25
 
 hajimeさん,

オプションを hajime さんと同じにして実行してみました。
 #confirm = 0;
 #time = 1000;
 #filter = 0;
 #wait = 1;
 #alltransmit = 1;
 #recover = 1;

ゴミ箱行きの振り分けを新たに作成,
題名に「ゴミ箱」が含まれていたら,ゴミ箱直行,送信,受信両方に適用

1.フォルダAで新規メールaを作成
 このとき,X-RootFolder: に「フォルダA」が入ります。
 題名を「ゴミ箱」,宛先は自分
2.別のフォルダBに移り,任意のメールを選択。
3.新規メールaに移り,「今すぐ送信」
4.「振り分け設定などに従いました。」のメッセージが出て終了。
 この後はな何も起こりません。
 送信したメール自体はゴミ箱にあります。
 またフォルダBのメールもそのままです。

hajimne さんとどこか違っていますか。
なお,送信時に自作の宛先確認マクロで確認が出ます。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00404 送信済みメールを送信元のフォルNo.00405
hajime さん 09/02/17 18:07
 
以下の通りやってみました。
#wait = 10000;
でも
>ゴミ箱行きの振り分けを新たに作成,
>題名に「ゴミ箱」が含まれていたら,ゴミ箱直行,送信,受信両方に適用
>
>1.フォルダAで新規メールaを作成
> このとき,X-RootFolder: に「フォルダA」が入ります。
> 題名を「ゴミ箱」,宛先は自分
2.別のフォルダBに移り,任意のメールbを選択。
>3.新規メールaに移り,「今すぐ送信」

#ここで、Waitが利いているようでしばらく止まる。

4.「振り分け設定などに従いました。」のメッセージが出た直後
5.「送信済みメールをフォルダAに移動しました」の
  メッセージが出て、メールbがフォルダAに移動します。

100%再現します。
Waitの問題ではないようですよね。

>なお,送信時に自作の宛先確認マクロで確認が出ます。
申し訳ありません。こちらはなんでしょうか。

[ ]
RE:00405 送信済みメールを送信元のフォルNo.00406
山紫水明 さん 09/02/17 21:04
 
 hajimeさん,

>>なお,送信時に自作の宛先確認マクロで確認が出ます。
>申し訳ありません。こちらはなんでしょうか。

ライブラリにある「送信前に宛先を確認するマクロ」です。
最新版は私のホームページにあります。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00406 送信済みメールを送信元のフォルNo.00407
hajime さん 09/02/17 23:38
 
「送信済みメールをフォルダAに移動しました」の
表示の時に、「OK」のボタンの背景は、
フォルダBのままで、その時点では未だ、メールbは
フォルダBにあるように表示されていて、
「OK」を押下したあと、
フォルダAが表示されて、その際メールbも移動している。
ということがあります。
これは、描画のタイミングの関係で自然な動作でしょうか。
何か、手がかりになればと思い報告します。

>>>なお,送信時に自作の宛先確認マクロで確認が出ます。
>>申し訳ありません。こちらはなんでしょうか。
>
>ライブラリにある「送信前に宛先を確認するマクロ」です。
>最新版は私のホームページにあります。
山紫水明さまの環境との違いを確かめる方法をご教示
下さったかと思っていますが、ちょっと分かりません。
申し訳ありません。

[ ]
RE:00407 送信済みメールを送信元のフォルNo.00408
hajime さん 09/02/18 01:12
 
マクロを見ていてやはり気になったのですが、
if(#m == 0 && #n == 0 ) {
    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time * 2 / 3 );
    message "振り分け設定などに従いました。";
}
#move = dllfunc( "Move", "", $rootfolder );
の部分です。これは、送信済みフォルダにメールが見あたらなかった場
合(#m == 0 && #n == 0 )、「現在選択しているメール」を
$rootfolderに移動するようプログラムされているように見えます。
ということは、私の環境での動作は、ある意味マクロ通りなのでは
と思えてきました。むしろ、どうして、山紫水明さまの環境では、
どのような動作にならずに済むのか、と。
的外れでしたら、申し訳ありません。とても便利なマクロでぜひ使い続
けたいのです。
とりあえず、
if(#m == 0 && #n == 0 ) {
    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time * 2 / 3 );
    message "振り分け設定などに従いました。";
    goto End;
}
#move = dllfunc( "Move", "", $rootfolder );
と、移動操作をパスするように(素人なりに)書き換えてみました。
これで何か他の誤動作の可能性があるようでしたら、御指摘下さい。

[ ]
RE:00408 送信済みメールを送信元のフォルNo.00409
山紫水明 さん 09/02/18 22:18
 
 hajimeさん,

>マクロを見ていてやはり気になったのですが、
>if(#m == 0 && #n == 0 ) {
>    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time * 2 / 3 );
>    message "振り分け設定などに従いました。";
>}
>#move = dllfunc( "Move", "", $rootfolder );

この数行前に
#n = dllfunc( "SelectFolder", "", "送信済み" );
という文があります。ここで本来なら送信済みフォルダに移っているはずです。
それが失敗しているのでしょうか?
この直後に
message str(#n);
を挿入してみてください。
成功していれば1,失敗していれば0を返します。
さらにその下に,カレントフォルダを調べるために
message dllfuncstr( "CurrentFolder" );
を挿入してみてください。

>とりあえず、
>if(#m == 0 && #n == 0 ) {
>    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time * 2 / 3 );
>    message "振り分け設定などに従いました。";
>    goto End;
>}
>#move = dllfunc( "Move", "", $rootfolder );
>と、移動操作をパスするように(素人なりに)書き換えてみました。

 もし症状がなおらないようでしたら,こうするよりほかないですが,ただ複数
メールの処理ができなくなりますね。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00409 送信済みメールを送信元のフォルNo.00415
hajime さん 09/03/10 01:43
 
山紫水明さま
反応が遅くなり申し訳ありません

>この数行前に
>#n = dllfunc( "SelectFolder", "", "送信済み" );
>という文があります。ここで本来なら送信済みフォルダに移っているはずです。
>それが失敗しているのでしょうか?
>この直後に
>message str(#n);
>を挿入してみてください。
>成功していれば1,失敗していれば0を返します。
>さらにその下に,カレントフォルダを調べるために
>message dllfuncstr( "CurrentFolder" );
>を挿入してみてください。

をしてみました。
失敗(0)をかえします。
フォルダは、

1.フォルダAで新規メールaを作成
 このとき,X-RootFolder: に「フォルダA」が入ります。
 題名を「ゴミ箱」,宛先は自分
2.別のフォルダBに移り,任意のメールbを選択。
3.新規メールaに移り,「今すぐ送信」

としたときの、フォルダBを示します。
これで、フォルダBで選択されているbが、
フォルダAに移動してしまいます。

この作業をしていて原因が特定できました。

私の仕様スタイルでは、
全般的設定⇒フォルダ⇒表示するフォルダ
の全てがチェックアウトされていて、
空の場合表示されない状態になっています。

業務内容別にフォルダが分かれていて、
必要に応じて複数のフォルダ内のメールを参照します。
そのため、出来るだけたくさんのフォルダを表示させたいので、
配置順を動かせない特殊フォルダ
すなわち、
全般的設定⇒フォルダ⇒表示するフォルダ
で表示の有無を変更できる諸フォルダは、
表示を抑制しておく方がリーズナブルなのです。
#実際空のことが多いので。

このスタイルと、
送信済みメールを返信もとメールのあるフォルダに保存する
というマクロが合致したのです。

しかし、今のバージョンのマクロでは、
このスタイルでは充分に活用できないことが分かりました。
もし可能でしたら、
送信済みフォルダが空で表示されていない場合への
対策を組み込んでいただけませんでしょうか。
#不可能なら、致し方ありません。
 マクロの注意書きに、こういう運用をすると、
 誤振り分けが生じて大変だから気をつけて、
 と記載しておくと良いかと思います。

しばらく、表示して運用します。
#画面で同時に視認できるフォルダが一つ減ってしまうのですけど。

[ ]
RE:00415 送信済みメールを送信元のフォルNo.00416
山紫水明 さん 09/03/10 21:29
 
 hajimeさん,

>私の仕様スタイルでは、
>全般的設定⇒フォルダ⇒表示するフォルダ
>の全てがチェックアウトされていて、
>空の場合表示されない状態になっています。

 なるほど,その設定があったのですか。
 いちおう対策を入れてみましたが,私の環境では,ちょっと実験が難しいので
試していただけませんか。一番下においています。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI


[ ]
RE:00416 送信済みメールを送信元のフォルNo.00417
hajime さん 09/03/13 01:07
 
山紫水明さま
>>私の仕様スタイルでは、
>>全般的設定⇒フォルダ⇒表示するフォルダ
>>の全てがチェックアウトされていて、
>>空の場合表示されない状態になっています。
>
> なるほど,その設定があったのですか。
> いちおう対策を入れてみましたが,私の環境では,ちょっと実験が難しいので
>試していただけませんか。一番下においています。

確かめました。
概ね問題なく動作するようです。

#n = dllfunc( "SelectFolder", "", "送信済み" );
if (#n==0) ・・・・;
のような回避策を考えていたのですが、
もっと大胆なアプローチ、
レジストリにアクセスするマクロとは驚きました。

もしかしたら、これまでの、#wait導入絡みの不安定さも
この設定の問題だったのかも知れません。

ちなみに、これまでは、#wait=0 とすると、
マクロが暴走(?)しましたが、
現在は、#wait=0 とすると、
送信済みフォルダ表示変更が元に戻りません(レジストリ
書き戻しの部分が有効にならない)。

どうしてなのか皆目分かりませんが、
一応、現象をご報告申し上げます。

[ ]
RE:00417 送信済みメールを送信元のフォルNo.00418
山紫水明 さん 09/03/14 20:20
 
 hajimeさん,

>#n = dllfunc( "SelectFolder", "", "送信済み" );
>if (#n==0) ・・・・;
>のような回避策を考えていたのですが、

これで
「送信済みフォルダの選択に失敗しました。送信済みフォルダを常に表示するよ
うにしてください。」
とメッセージを出して,マクロ中断することも考えられるのですが。

>現在は、#wait=0 とすると、
>送信済みフォルダ表示変更が元に戻りません(レジストリ
>書き戻しの部分が有効にならない)。

 #wait を0 にするのはエラー回避策を無意味にしてしまうことになりますので,
一定の値を設定して欲しいと思います。0 でも 100 でも体感的には変わらない
でしょう。
 むしろ送信済みフォルダ表示変更の方が時間がかかると思います。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00418 送信済みメールを送信元のフォルNo.00421
hajime さん 09/03/16 12:20
 
コメントありがとうございます
> #wait を0 にするのはエラー回避策を無意味にしてしまうことになりますので,
>一定の値を設定して欲しいと思います。0 でも 100 でも体感的には変わらない
#waitには1以上の値を設定するべきものとして覚えておこうと思います。

ところで、文字チェックマクロを
「後で送信/今すぐ送信」の自動マクロに登録して運用する
の、件ですが、
ほかのマクロが「後で送信/今すぐ送信」の自動マクロに
登録されてる場合は、どうしたらいいのかご教授ください。
非常に素人的な質問で、申し訳ありません。

マクロの中にマクロ起動の命令を入れるのでしょうか。
具体的には「宛先が携帯メールの場合、
改行コードを入れないようにするマクロ」なのですが、
コメントいただけたら幸いです。

[ ]
RE:00421 送信済みメールを送信元のフォルNo.00422
山紫水明 さん 09/03/17 20:55
 
 hajimeさん,

>ほかのマクロが「後で送信/今すぐ送信」の自動マクロに
>登録されてる場合は、どうしたらいいのかご教授ください。
>
>マクロの中にマクロ起動の命令を入れるのでしょうか。

 2つ以上の自動起動マクロを登録する方法は,1つはここでお書きになってい
るように,1つのマクロの最後の行に(endmacro; の直前)に
execmacro "aaaaaa.mac";
と書き込む方法です。他の方法は
execmacro "aaaaaa.mac";
execmacro "bbbbbb.mac";
という内容のマクロをつくり適当な名前をつけ,そのマクロを自動起動マクロと
して登録する方法です。マクロの内容が相互に矛盾しなければ,3つ以上でも可
能です。場合によってはマクロの順序に気をつける必要があります。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI

[ ]
RE:00422 送信済みメールを送信元のフォルNo.00423
hajime さん 09/03/23 15:02
 
ご教示ありがとうございました。

今更の確認ですが、
題名,OS・機種依存文字,制御記号チェックマクロの
HMMCheckCharacter.mac
が絡む設定は、
全般的な設定・上級者向け・確認メッセージ2
の左側の4つ、
題名が無い時
半角カナを含む時
機種依存文字を含む時
制御文字を含む時
をチェックアウトして使うと云うことで理解しておりますが、
もし、間違っていたら御指摘下さい。

いろいろとありがとうございました。

[ ]
RE:00423 送信済みメールを送信元のフォルNo.00424
山紫水明 さん 09/03/23 20:55
 
 hajimeさん,

>題名が無い時
>半角カナを含む時
>機種依存文字を含む時
>制御文字を含む時
>をチェックアウトして使うと云うことで理解しておりますが、

 それで間違いありません。

     では, (^^)/~
                                    山紫水明
                                    SANSHISUIMEI


[ ]