送信済みメールを送信元のフォルダに保存No.00314
山紫水明 さん 08/12/12 20:50
 

 hajimeさん,

(スレッドが伸びすぎているようですので,新しくしました。)

>設定→メール表示→詳細(その他) の 一番先頭のメニューです。

 なるほどここで設定できるのですね。となると特殊な例でもないので,マクロ
としても対応できたらしてみます。

>キャラクタチェック警告の際「このまま送るか」といわれて、
>当該文字列に移動して確認しようと思い「いいえ」と回答すると、
>秀丸メールで用意されたその動作からマクロが操作を奪い、
>送信エラーの時と同じように、「保存するかどうか」を
>問い合わせる状態に飛びます(たぶん仕様)。

 この文字チェックのタイミングとマクロの実行はマクロの側では制御できない
と思います。したがった文字チェックを行いたければ,送信する以前にチェック
専用マクロ(秀丸エディタのマクロライブラリにあるようです)でチェックする
か,次のようなマクロを「後で送信/今すぐ送信」時の自動マクロに登録するこ
とになるでしょう。
 このマクロはとりあえず作ったもので,あまり精度が高くないかも知れません。
何か引っかかるべき文字が通過してしまう例があれば,指摘していただければと
思います。
 なお,このマクロでチェックしてもそのまま送信した場合は,本体のチェック
が二重に働きます。これが煩わしければ,このマクロを使用しないで,送信前に
独自にチェックする以外にないでしょう。

//----- HMMCheckCharacter.mac --------------------------------//
    ////////// 機種依存文字チェック /////////
moveto 0, -999;
searchdown "[。-゚@-嘱@-I]", regular;
if( result ) {
    question "機種依存文字があります。そのまま送信しますか?";
    if( result == no ) {
        #n = dllfunc( "SetCancel", 1 );
        endmacro;
    }
}
endmacro;
//-----------------------------------------------------------//

>エディタ画面で、送信操作直後、中断操作をしても、同様に、「振り分けに従
>いました」と表示して、編集した文書が消える、という動作になります。

 この場合,「送信済み」フォルダにも残っていませんか?

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

[ ]
RE:00314 送信済みメールを送信元のフォルNo.00315
山紫水明 さん 08/12/14 17:01
 

 若干のエラー処理を加えて,ベータ版としてアップしておきました。最後
に置いています
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:00315 送信済みメールを送信元のフォルNo.00316
hajime さん 08/12/14 19:48
 
山紫水明
> 若干のエラー処理を加えて,ベータ版としてアップしておきました。最後
>に置いています
ありがとうございました。
キャラクタチェックを含むあらゆる警告への「yes」以外の反応と、
送信中断に、メール送信が0の場合、という条件で対応したんですね。

再度確認ですが、このマクロは、
エディタ画面で「今すぐ送信」操作をしたときに駆動するのであって
未送信フォルダに入っているメールが送信されるときには、
このマクロは関与しないと理解してOKでしょうか。

[ ]
RE:00316 送信済みメールを送信元のフォルNo.00317
hajime さん 08/12/14 19:50
 
山紫水明さま
>山紫水明
申し訳ありません。「さま」を付さずに送信してしまいました。
確認可能な範囲で動作確認してご報告いたします。

[ ]
RE:00317 送信済みメールを送信元のフォルNo.00318
hajime さん 08/12/14 21:03
 
キャラクタチェック Subject:空欄チェック 等のチェックへの警告で
そのまま送信しますかに「いいえ」と回答した場合、
保存関係の4択画面になることを確認しました。
キャラクタチェック等当該文字列にカーソルを飛ばしたい場合は、
「未送信フォルダ」「草稿フォルダ」への保存を選ぶと、
保存の前に当該チェックのルーチンに入れます。
この辺は、ある種の仕様としてTips的に書いてあると親切かと。
また、送信を途中で中断した場合も同様に適切に処理されました。

ときどき「マクロは正常に処理できませんでした。」と表示され
「送信済み」フォルダに保存されることがあります。
なにか動作チェックをかけるために、どこかにquestionを入れる等
工夫のしようがありそうでしたらご教示ください。

[ ]
RE:00318 送信済みメールを送信元のフォルNo.00319
hajime さん 08/12/14 21:46
 
>ときどき「マクロは正常に処理できませんでした。」と表示され
>「送信済み」フォルダに保存されることがあります。
>なにか動作チェックをかけるために、どこかにquestionを入れる等
>工夫のしようがありそうでしたらご教示ください。
頻度は60%くらいです。なんででしょう・・・

[ ]
RE:00318 送信済みメールを送信元のフォルNo.00320
山紫水明 さん 08/12/14 22:31
 
 hajimeさん,

>再度確認ですが、このマクロは、
>エディタ画面で「今すぐ送信」操作をしたときに駆動するのであって
>未送信フォルダに入っているメールが送信されるときには、
>このマクロは関与しないと理解してOKでしょうか。

 いや,「履歴」にも書いていますように Ver.1.6 からは未送信フォルダの
メールも対象にするようになっています。そのための自動起動の登録場所変更で
した。
 もし未送信フォルダのメールにこのマクロが動いてないようでしたら,マクロ
の初めのあたりに
message "ok";
を入れ,実際にマクロが起動しているかどうか確認してください。
 起動しているようでしたら,この message の位置を徐々に後にもっていき,
どの辺まで動作しているか確認できると思います。

>ときどき「マクロは正常に処理できませんでした。」と表示され
>「送信済み」フォルダに保存されることがあります。

 文字チェックにつきましては前にもかきましたように,マクロ動作との関係に
ついてはよくわかりません。ときどき不可解なことがおこり,場合によっては
メールが失われる危険性も否定できません。したがって今回の処理も万全ではな
い可能性があります。
 したがって文字チェックは,別マクロで処理していただくのがお勧めで,本体
のチェックはOFFにしていただく方がこのマクロとの親和性はいいと思います
ので,私自身はそうしています。「履歴」のところにそのような説明を追加する
予定です。

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

[ ]
RE:00320 送信済みメールを送信元のフォルNo.00321
hajime さん 08/12/14 22:50
 
> もし未送信フォルダのメールにこのマクロが動いてないようでしたら,マクロ
>の初めのあたりに
>message "ok";
>を入れ,実際にマクロが起動しているかどうか確認してください。
やってみます。

>>ときどき「マクロは正常に処理できませんでした。」と表示され
>>「送信済み」フォルダに保存されることがあります。
これは、普通に送信しただけの時に生じます。
今は100%になってしまいました。なんででしょう。
テストメールは結構いけた場合もあったんですが。

[ ]
RE:00321 送信済みメールを送信元のフォルNo.00322
hajime さん 08/12/14 23:05
 
> もし未送信フォルダのメールにこのマクロが動いてないようでしたら,マクロ
>の初めのあたりに
>message "ok";
>を入れ,実際にマクロが起動しているかどうか確認してください。
こちらは、すぐに分かりました。

#tcc = dllfunc("GetTransmitCommandCode");
if( (#tcc != 40041) && (#tcc != 40059) ) {
message "ok";
    endmacro;
}

でOKと表示されますので、この処理でマクロが終わってます。

私が引っかかったのは、
すべて送受信 40024
すべて送信の後終了 40210
の2つの場合です。

他にも、
送受信 40216
すべて送信 40144
あたりでも、マクロが起動して欲しいところです。

もう一方の謎のチェック方法が分かりましたら、
ご教示ください。

[ ]
RE:00322 送信済みメールを送信元のフォルNo.00323
hajime さん 08/12/14 23:30
 
>#tcc = dllfunc("GetTransmitCommandCode");
>if( (#tcc != 40041) && (#tcc != 40059) ) {

>すべて送受信 40024
>すべて送信の後終了 40210
をパスしないようにすればよいという簡単な問題ではないことは
実験してみてすぐに分かりました。
とりあえず、未送信がある場合「未送信メールの送信」
コマンドを使うようにすること、
終了しようとして未送信があるが送るかと警告が出た場合、
とりあえず、OKせずに、上記の方法で送信するようにすること、
の2点を、運用方法として覚えておきます。

[ ]
RE:00321 送信済みメールを送信元のフォルNo.00324
hajime さん 08/12/15 03:28
 
>>>ときどき「マクロは正常に処理できませんでした。」と表示され
>>>「送信済み」フォルダに保存されることがあります。
>これは、普通に送信しただけの時に生じます。
>今は100%になってしまいました。なんででしょう。
>テストメールは結構いけた場合もあったんですが。
ですが、

  //移動されたメールを検索
#n = dllfunc("SetFindPack", "(\"" + $subject + "\", target=
subject) and (\"" + $from + "\", target=from) and (\"" + $to + "
\", target=to) and (\"" + $dt + "\", target=\"Date:\"), inmail=0"
 );
#n =dllfunc("FindDown");
if( #n== 0 ) #m = dllfunc("FindUp");
if(#m == 0 && #n == 0 ) {
    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time);
    message "マクロは正常に処理できませんでした。";
    goto End;
}

で、検索にヒットしないという印象です。

$dt = dllfuncstr("CurrentDate", "EW, DD EM YYYY hh:mm:ss");

$dt = dllfuncstr("CurrentDate", "EW, DD EM YYYY hh");
に変えたのが影響してませんか?
ちょうど00分00秒にならないとヒットしないとか。
・・・まさかね。指定が細かくてヒットしないことへの対策ですよね。

[ ]
RE:00324 送信済みメールを送信元のフォルNo.00325
hajime さん 08/12/15 04:47
 
>  //移動されたメールを検索
>#n = dllfunc("SetFindPack", "(\"" + $subject + "\", target=
>subject) and (\"" + $from + "\", target=from) and (\"" + $to + "
>\", target=to) and (\"" + $dt + "\", target=\"Date:\"), inmail=0"
> );
>#n =dllfunc("FindDown");
までは成功しているようです。
検索条件指定に問題はないようです。
マクロ終了後に残っている検索条件で検索するとヒットします。

>if( #n== 0 ) #m = dllfunc("FindUp");
>if(#m == 0 && #n == 0 ) {
ここがうまくないようです。

if((#m == 0) && (#n == 0) ) {
にしたら、うまく動作しました。
もうしばらく様子を見ることにします。

[ ]
RE:00320 送信済みメールを送信元のフォルNo.00326
hajime さん 08/12/15 06:11
 
> いや,「履歴」にも書いていますように Ver.1.6 からは未送信フォルダの
>メールも対象にするようになっています。そのための自動起動の登録場所変更で
>した。
「未送信メールの送信」コマンドを使っても
うまくいかないことが多い(80%以上)のでご報告を。

どうも、未送信フォルダ から 送信済み フォルダに
メールファイルが移動するタイミングと、
マクロで当該異動予定メールを検索するタイミングとが
前後してしまうようです。

検索条件の設定はあっています。
しかし検索失敗します。
未送信フォルダに当該メールがまだ存在しないために
エラーうまくいかないことになるような感じです(推測です)。
「今すぐ送信」とでどうして動作が異なるのか、
理解しがたいのですが。。

[ ]
RE:00326 送信済みメールを送信元のフォルNo.00327
hajime さん 08/12/15 14:24
 
いろいろと勘違いしておりました

if((#m == 0) && (#n == 0) ) {
にしてうまくいったのは偶然が重なっただけでした

また、tcc = 40059(未送信メールの送信)動作時の不具合について
「検索条件の設定はあっています。」
と書きましたが、これも、偶然の一致によるもので、
tcc = 40059 の場合は、一貫して
  //移動されたメールを検索
のところの検索条件設定がうまくいかないようです。
ひと世代前の検索条件が残っていることを確認しました。
#たまにうまくいったような記憶もありますが、
 どうも自分が信じられなくなっています

今すぐ送信 の場合も、ときどき同じことが生じます。
一体なぜでしょう。ちょうどきりの良い時間に送信すると
そうなるんでしょうか?

ということで、しらみつぶしにマクロのあちこちで、
変数の値を表示させつつ、流れを追っていきました。

今のところの最有力問題点発見です、ご報告します。
$subject = dllfuncstr( "CurrentHeader", "Subject" );
if( strstr( $subject, unichar( 0x200f ) ) >= 0 ) {
    message "題名にマクロで未対応の文字が含まれています。";
    endmacro;
}
の処理の時に取得する$subjectが、
tcc = 40059(未送信メールの送信)動作時には、
作成されたファイル名ではなく、いまたまたまフォーカスのある
ファイルの値になります。
で、この値を利用して処理が進んでしまいます。

これでこれまで(古いバージョンのβ版マクロで)、
ときどき誤振り分けが生じた理由もなんとなくわかってきました。

しかし、まだこの辺の動作の絡み合いは理解できていません。
とりあえず、ご報告申し上げます。

[ ]
RE:00325 送信済みメールを送信元のフォルNo.00328
hajime さん 08/12/15 15:31
 
今現在
  //移動されたメールを検索
処理で100%失敗します。
検索条件の設定は問題なくなされているようです。
(今すぐ送信動作の場合)
送信済みフォルダにファイルが移動するタイミングが
変動するのでしょうか。
同じメールに返信を繰り返す形でてすとをしていると、
送信済みにメールが存在するときに、成功することが
あります。
逆に、今現在、送信済みフォルダが空だと、完全に、
検索失敗するようになってしまいました。

[ ]
RE:00328 送信済みメールを送信元のフォルNo.00329
山紫水明 さん 08/12/15 20:11
 
 hajimeさん,

>逆に、今現在、送信済みフォルダが空だと、完全に、
>検索失敗するようになってしまいました。

 送信フォルダが空の場合は想定していませんでした。
 FindUp,FindDown 関数はそのメール自身は対象になりませんので,それぞれ
FindUpInclude,FindDownInclude に変えてみてください。

>未送信フォルダに当該メールがまだ存在しないために
>エラーうまくいかないことになるような感じです(推測です)。

 こちらでは起こりませんがその可能性も否定できません。とりあえず,オプ
ションの #confirm を1にして確認していただけませんか。

 いろいろ問題がありそうですが,まずはこの辺からということでお願いします。

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

[ ]
RE:00329 送信済みメールを送信元のフォルNo.00330
hajime さん 08/12/16 23:31
 
ありがとうございました。
> 送信フォルダが空の場合は想定していませんでした。
> FindUp,FindDown 関数はそのメール自身は対象になりませんので,それぞれ
>FindUpInclude,FindDownInclude に変えてみてください。
まったく知りませんでした。そうだったんですね。
今困っていることの90%は解決しそうです。
でも、逆にどうして今まで成功し得ていたのか理解できませんが・・・

[ ]
RE:00330 送信済みメールを送信元のフォルNo.00331
山紫水明 さん 08/12/17 21:30
 
 hajimeさん,

>でも、逆にどうして今まで成功し得ていたのか理解できませんが・・・

 以前は検索の成否に関わりなく,「送信済み」フォルダからメールの移動をし
ていました。一つしかなければ,それが移動されていたわけです。

 さらに修正を追加してβ2としてアップしておきました。

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

[ ]
RE:00331 送信済みメールを送信元のフォルNo.00335
hajime さん 08/12/18 20:18
 
> さらに修正を追加してβ2としてアップしておきました。
快調です。

[ ]
RE:00335 送信済みメールを送信元のフォルNo.00337
hajime さん 08/12/19 11:56
 
快調に安定動作しています。
このたびはもし可能でしたらアドバイスを頂きたく
さて
本マクロは最後の処理で、移動したメールにフォーカスを移すという処
理をしているように思います。安定動作しているときには、マクロの動
作を逐一確認することなく、次の作業に入りたいと感じますが、マクロ
が動作の最後でフォーカスをとられてしまい、再度読みかけのメールを
探す作業に入らないとなりません。「履歴戻り」コマンドですぐに戻れ
るようですが、できればその作業も省略したいと思うのですが、
その場合

#n = dllfunc( "SelectFolder", "", $rootfolder );
if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time);
if( #move != 0 ) {
  //移動されたメールを選択
    #n = dllfunc("SetFindPack", "(\"" + $subject + "\", target=
subject) and (\"" + $from + "\", target=from) and (\"" + $to + "
\", target=to)and (\"" + $dt + "\", target=\"Date:\"), inmail=0"
 );
    if( !dllfunc("FindDown") ) #n = dllfunc("FindUp");
    if( #time ) {
        message "送信済みメールを " + $rootfolderb + " に保存し
ました。";
    }
} else {
    if( #time ) message "送信済みメールは振り分け設定に従いまし
た。";
    if( #filter ) {
        #n = dllfunc("SetFindPack", "(\"" + $subject + "\",
target=subject) and (\"" + $from + "\", target=from) and (\"" +
$to + "\", target=to)and (\"" + $dt + "\", target=\"Date:\"),
subfolder=1, inmail=2" );
        if( !dllfunc("FindDown") ) #n = dllfunc("FindUp");
    }
}

の部分を全部コメントアウトするだけでOKでしょうか?
何か大切な処理を外してしまうのではないかと少し心配です。

[ ]
RE:00337 送信済みメールを送信元のフォルNo.00338
hajime さん 08/12/19 12:26
 
だめでした
結局送信済みフォルダにフォーカスをとられてしまいますね
そこで
DisableDrawの直後に
$CurrentFolder = dllfuncstr( "CurrentFolder" );
EnableDrawの直前に
#n = dllfunc( "SelectFolder", "", $CurrentFolder );
を入れてみました。

[ ]
RE:00331 送信済みメールを送信元のフォルNo.00339
hajime さん 08/12/19 14:54
 
β2について
たぶん、

送信済みフォルダで検索
 成功or失敗→「正常に処理できませんでした。」
 ↓
移動
 成功or失敗→「振り分け設定に従いました。」
 ↓
異動先フォルダで検索

というアルゴリズムなんだと思うんですが
#wait をかけるようになったからなのかもしれませんが、
振り分け設定している送信メールにおいて
 #おもにMLへの投稿です
  すぐ自分にも送られてくるので
  ゴミ箱に直行するようにしています
「正常に処理できませんでした。」となる場合があります。

私のつたない予想では、
自動振り分け設定の動作が、早めに行われると、
「正常に処理できませんでした。」になってしまうのかな、
と思っています。

振り分け設定に従ったかどうかの判定は
「送信済みフォルダに一旦存在したものが
 移動しようとする直前に消えて無くなった」
ということかと推定しています。
全くの素人の思いつきなんですが、
充分waitをかければ、
「送信済みフォルダに存在しない」ことを以て、
「振り分け設定に従いました。」と判定しても良いのかな、
と思いましたが、如何でしょうか。

[ ]
RE:00339 送信済みメールを送信元のフォルNo.00340
hajime さん 08/12/19 14:57
 
#wait=0でしばらく様子を見てみます

[ ]
RE:00340 送信済みメールを送信元のフォルNo.00341
山紫水明 さん 08/12/19 22:25
 
 hajimeさん,

>送信済みフォルダで検索
> 成功or失敗→「正常に処理できませんでした。」
> ↓
>移動
> 成功or失敗→「振り分け設定に従いました。」
> ↓
>異動先フォルダで検索
>
>というアルゴリズムなんだと思うんですが

 私自身は送信時には自動振り分けしない設定にしていたので,気づきませんで
したが,この辺マクロは少しレベルダウンしている可能性があります。
 振り分けは送信済みフォルダに入るの前に行われていると思っています。この
あたりのタイミングはよくわかりません。したがって,以前は送信済みフォルダ
で検索できなければ,元々にこのフォルダになかったとして,すべて振り分けら
れたと見なしていました。
 見つからなかった場合に,異常があったのか振り分けられたか見分けるのは困
難な気がします。したがって,ここは両者をまとめて「送信済みフォルダに保存
できませんでした」とすべきところかも知れません。

>本マクロは最後の処理で、移動したメールにフォーカスを移すという処
>理をしているように思います。安定動作しているときには、マクロの動
>作を逐一確認することなく、次の作業に入りたいと感じますが、マクロ
>が動作の最後でフォーカスをとられてしまい、再度読みかけのメールを
>探す作業に入らないとなりません。「履歴戻り」コマンドですぐに戻れ
>るようですが、できればその作業も省略したいと思うのですが、

 どんな状態でこういう場面になるのか,よく理解できません。メールを書いて
「すぐ送信」する場合でしたら,こういう事態は起こりませんから,未送信フォ
ルダに保存されたメールを「すべて送信」か「未送信メールの送信」で送信した
時だろうと思います。そういう操作は,通常読みかけの途中で行うものでしょう
か。まあ,使い方は千差万別ですから,そういう操作もあるかもしれないとは思
いますが。
 お示しの修正でうまくいくようでしたら,それでいいと思います。

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

[ ]
RE:00341 送信済みメールを送信元のフォルNo.00342
hajime さん 08/12/22 13:34
 
とりあえず、#wait に関して。
新たな事態です。
CPUやWindowsのバージョンによって動作は違うのかもしれませんが、
#confirm = 0 かつ #wait=0 だと
振り分けそのものが行われない時があります。
なんだか、マクロそのものが中断しちゃう感じです。
Core(TM) Solo 1.33GHz + Vista
の場合、そうなることを確認しました。
    question "動作チェック";
って行を入れながら確認すると、
if( #confirm == 0 ) ddewaitadvice "", #wait;
の直前までは動いていますが
次の行に
    question "動作チェック";
をいれても反応しません。
振り分け動作も、各種表示動作もなされません。

XPマシンで試したときにはこんなことはなかったのですが・・

[ ]
RE:00342 送信済みメールを送信元のフォルNo.00343
hajime さん 08/12/22 13:56
 
ちなみに、
Core(TM) Solo 1.33GHz + Vista にて
#confirm = 0 かつ #wait=1 だと
期待通り(?)の動作をします
「正常に処理できませんでした。」
との表示がされますので、
送信済みフォルダで検索の時点で振り分け動作が
終了していたようです。
送信済みフォルダには入らずに振り分けがなされる
という仮説が正しいとすると、
「振り分け設定に従いました。」
と表示される場合があったのがちょっと理解できなく
なりますが、私も、十分条件を統制して作業できていませんし
日常の業務の中で気づいたときにみている程度ですので、
もしかしたら、記憶違いだったのかも知れません。
いずれにしても、よほどのロースペックマシンでない限り、
振り分けは送信済みフォルダの検索の前に行われると仮定すると

送信済みフォルダで検索
 成功or失敗→「振り分け設定に従いました。」
 ↓
移動
 成功or失敗→「正常に処理できませんでした。」
 ↓
異動先フォルダで検索

という風に理解する方がよいかもしれませんね。
#今のメッセージ表示のパタンの逆
一旦送信済みフォルダに存在したはずのメールが
移動の祭には消えていたってことは
普通はあり得ないってことですよね。

一応メッセージ表示を変えておいていただけると、
「正常に処理できませんでした。」の表示が出た場合、
ご報告することが出来ます。
これは、想定外の事態ですよね(本来は)。

[ ]
RE:00341 送信済みメールを送信元のフォルNo.00344
hajime さん 08/12/22 14:38
 
>>が動作の最後でフォーカスをとられてしまい、再度読みかけのメールを
>>探す作業に入らないとなりません。「履歴戻り」コマンドですぐに戻れ
>>るようですが、できればその作業も省略したいと思うのですが、
>
> どんな状態でこういう場面になるのか,よく理解できません。メールを書いて
>「すぐ送信」する場合でしたら,こういう事態は起こりませんから,未送信フォ

実は今これを書いているPCではなくて、
別のXPマシンの場合なんですが(pen4 + XP)
結構スローなので、「すぐ送信」しても、送信が終わるまで
結構な時間がかかります。
#メールサーバのスペックの問題も絡むと思います。
簡単な連絡系メールであれば、2本くらい読めちゃいます。
ので、読んで居るんですが、その最中に、送信が終わると、
移動後検索がはじまって、フォーカス取られちゃう。
「えっと、どのメール読んでたんだっけ?」ってなるんです。

> お示しの修正でうまくいくようでしたら,それでいいと思います。

#waitの設定ですこし躓いていますが、
// if( #confirm == 0 ) ddewaitadvice "", #wait;
としつつ、件の修正で様子を見ようと思います。
もともと #wait は、自動振り分け動作のタイミングのいたずら
の可能性を考慮してのことですが、そもそもの不調の原因は、
どうやら、
FindUpInclude,FindDownInclude

$subject = dllfuncstr( "CurrentHeader", "Subject" );
の位置だったようですので、
#wait=0では上手くいかないこともあるようですので、
コメントアウトして、#waitが不要であるかどうか確認してみたいと
思います。

ところで、
        if( !dllfunc("FindDown") ) #n = dllfunc("FindUp");
が2箇所ありますが、これも、
        if( !dllfunc("FindDownInclude") ) #n = dllfunc("FindUpInclude");
としておく方がよいでしょうか?
異動先にメールがないという事例はごくレアでしょうが、
新たに作ったフォルダからメールを書き始めることは
あり得るかと思います。

それと、
if( #mc < #mailcount ) goto SendNext:
で、最後がコロンになっていますが、これはOKでしょうか。
ちゃんと動作した気もするので、OKかもしれませんが。
一応気になったのでご報告いたします。

また、
  //移動されたメールを検索

  //移動するメールを検索
ですよね。だんだんマクロが読めるようになってきたので、
思ったんですが。

[ ]
RE:00344 送信済みメールを送信元のフォルNo.00345
hajime さん 08/12/22 17:15
 
140行あたりの

if(#m == 0 && #n == 0 ) {
    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time);
    message "マクロは正常に処理できませんでした。";
    goto End;
}



if(#m == 0 && #n == 0 ) {
    if( #time ) #n = dllfunc( "SetAutoPushTimerMilli", #time);
    message "送信済みメールは振り分け設定に従いました。";
    goto End;
}

に、

160行のあと

} else {
    if( #time ) message "送信済みメールは振り分け設定に従いまし
た。";
    if( #filter ) {

以降End:までを

} else {
    question "メールの移動に失敗しました。\n"
           + "検索を試みますか?";
    if( result == yes ) #filter = 1;
}
End:
    if( #filter ) {
        #n = dllfunc("SetFindPack", "(\"" + $subject + "\",
target=subject) and (\"" + $from + "\", target=from) and (\"" +
$to + "\", target=to)and (\"" + $dt + "\", target=\"Date:\"),
subfolder=1, inmail=2" );
        if( !dllfunc("FindDown") ) #n = dllfunc("FindUp");
    }

にして、様子を見ようと思います。
これで、原理的には、一旦送信済みフォルダに存在したメールについて
移動失敗した場合の動作確認が出来るように考えていますが、
如何でしょうか。

[ ]
RE:00344 送信済みメールを送信元のフォルNo.00346
山紫水明 さん 08/12/23 10:14
 
 hajimeさん,

>#メールサーバのスペックの問題も絡むと思います。
>簡単な連絡系メールであれば、2本くらい読めちゃいます。
>ので、読んで居るんですが、その最中に、送信が終わると、
>移動後検索がはじまって、フォーカス取られちゃう。
>「えっと、どのメール読んでたんだっけ?」ってなるんです。

 なるほどそういうこともありますか。


>もともと #wait は、自動振り分け動作のタイミングのいたずら
>の可能性を考慮してのことですが、そもそもの不調の原因は、
>どうやら、
>FindUpInclude,FindDownInclude
>と
>$subject = dllfuncstr( "CurrentHeader", "Subject" );
>の位置だったようですので、
>#wait=0では上手くいかないこともあるようですので、
>コメントアウトして、#waitが不要であるかどうか確認してみたいと
>思います。

 もともとこれに相当することはしていなくても私のところでは問題はなかった
のですが,不具合の報告があったので,タイミング調整で入れてみたものです。
もし必要なければ外してもかまいませんが,安定動作のために初期設定ではつけ
てあります。

>ところで、
>        if( !dllfunc("FindDown") ) #n = dllfunc("FindUp");
>が2箇所ありますが、これも、
>        if( !dllfunc("FindDownInclude") ) #n = dllfunc("FindUpInclude");
>としておく方がよいでしょうか?

2カ所のうち上の方はそうしておいた方が無難でしょう。下の方はアカウント自体
から検索を始めますので,その必要はありませんが,変えても害はないでしょう。

>if( #mc < #mailcount ) goto SendNext:
>で、最後がコロンになっていますが、これはOKでしょうか。
>ちゃんと動作した気もするので、OKかもしれませんが。
>一応気になったのでご報告いたします。

 これはうっかりしていました。これでも動きますが修正した方がいいでしょう。

>  //移動されたメールを検索
>は
>  //移動するメールを検索
>ですよね。

 送信済みフォルダに送信済みメールが存在するか否かを検索しています。

 少し修正したものを再度アップしておきました。

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

[ ]
RE:00346 送信済みメールを送信元のフォルNo.00347
hajime さん 08/12/23 11:20
 
山紫水明さま
いろいろありがとうございます。
MailIndexがスレッド表示でどうなるのか試してみます。

v108b2での特殊事例の報告を申し上げます。
v108b3でどういう風に動作するのかちょっとわかりませんが、
同じような挙動をするかも知れません。
さて、
ゴミ箱フォルダのメールに返信する場合があります。
その場合、通常なら単に送信済みのメールはゴミ箱に移動されます。

しかし、そのメールが自動振り分けでゴミ箱等に振り分けられた場合。
「一旦送信済みメールに存在し、その後移動に失敗した」かのような
動作をします。(例のアルゴリズムの後半のパタンを示します。
v108b3ではそのような場合、表示されずに検索がはじまるという
パタンになるような気がします。如何でしょう)

実際に一旦送信済みメールに存在するのか(もしそうだとすると、
#waitを適切にかければ、問題なく動作するようになるのかもしれ
ません)、「ゴミ箱」という例外的フォルダ名のために、マクロの
流れがどっかジャンプしちゃっているのか(その場合は、ゴミ箱
という値を適切に扱えるようにする必要があるのかもしれません。
申し訳ありません、マクロを充分理解していないので、
どういう風に処理されているのか曖昧なのでこんな書き方になります)。

[ ]
RE:00347 送信済みメールを送信元のフォルNo.00348
山紫水明 さん 08/12/24 20:47
 
 hajimeさん,

>ゴミ箱フォルダのメールに返信する場合があります。
 そういう使い方は想定外です。もし返信が必要でしたら,ゴミ箱から元のフォ
ルダに戻すと思いますけど。何のためのゴミ箱でしょう。まあ,人それぞれです
が。

>しかし、そのメールが自動振り分けでゴミ箱等に振り分けられた場合。
 これは通常のフォルダでも,そこに振り分け設定があれば,同じ動きになると
思います。
 ゴミ箱が異なるのは,メール作成時にフォルダ名がヘッダに記録されないこと
だけだと思います。

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

[ ]
RE:00348 送信済みメールを送信元のフォルNo.00349
hajime さん 08/12/25 07:45
 
山紫水明さま
>>ゴミ箱フォルダのメールに返信する場合があります。
> そういう使い方は想定外です。もし返信が必要でしたら,ゴミ箱から元のフォ
削除したメールで、返信しておいた方がよいと思ったメールで
且つ返信済みもろともすぐに削除する類のメールの場合は、
いちいち戻さずに「あ、一応返信しておくかな」と思ったときに
ゴミ箱から返信します。送信済みメールもゴミ箱に入ってくれるので
私としては大変重宝しています。

>>しかし、そのメールが自動振り分けでゴミ箱等に振り分けられた場合。
> これは通常のフォルダでも,そこに振り分け設定があれば,同じ動きになると
>思います。
> ゴミ箱が異なるのは,メール作成時にフォルダ名がヘッダに記録されないこと
>だけだと思います。

XP+v108b3 では問題なく動作することを確認しました。
Vista+v108b2 では
「送信済みフォルダでの検索には成功したのに、
 送信済みフォルダからの移動に失敗した」
時の動作をしました。
v108b3のマクロの流れを追った印象では
通常ではそういうことは生じないと想定されていると
理解しています。
もし、そのような事態が生じた場合、
「振り分けなどの理由により,送信元フォルダに保存しませんでした」
の表示がされずに、アカウント内全検索に入るのかな、と思ったのです。
もうすこし、事例を重ねてからきちんとご報告いたします。
#あまりに例外的な使い方で報告して意味無いかもしれませんが。

大変快適に動作しています。
ありがとうございました。

[ ]
RE:00349 送信済みメールを送信元のフォルNo.00350
山紫水明 さん 08/12/25 22:19
 
 hajimeさん,

>「振り分けなどの理由により,送信元フォルダに保存しませんでした」
 振り分け設定でたまたま送信フォルダに保存された場合は,このメッセージで
いいか悩ましいところですので,もっと簡便にしました。

 秀丸メールも Ver.5.13 の正式版が出たところでもあり,ほとんどいじらずに
Ver.1.08 としてアップしました。

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

[ ]
RE:00350 送信済みメールを送信元のフォルNo.00351
hajime さん 08/12/26 13:01
 
> 秀丸メールも Ver.5.13 の正式版が出たところでもあり,ほとんどいじらずに
え!?なんと、
GoogleのSPAMフィルタで正式版アップの情報がはじかれていました。

>Ver.1.08 としてアップしました。
こちらも正式版を使ってみます。

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


[ ]