メール発生順の扱いについてNo.43878
PlaNet さん 12/12/31 00:05
 
お世話になっております。

i.softbank.jpのメールを「IMAP4的にフォルダやメールを同期させるモード」で扱っ
ています。
この年末にメールをスレッドの形で整理しようと、秀丸メールである同期フォルダ
(A)に受信メールと送信メールのそれぞれ800通ほどを移動させて受信処理を行いまし
た。
すると、iPhoneでAフォルダの最新50通を表示させると自分の送信メールばかりが表
示されました。
そこで、普段Dateでソートしているメールを「メール発生順」でソートしたところ、
受信→送信の順で移動したせいか、送信メール群が受信メール群よりも新しいものと
なっていました。
ちなみに、以前からAフォルダに自動で振り分けていたメーリスのメール群は最も古
くなっていました。
ソートした順で移動してくれるのかと思い、別のフォルダを作ってDate順表示でAフ
ォルダ内のメールを移動してみましたが、変わらずiPhoneでは自分の送信メールしか
見えませんでした。

iPhoneでの表示順がメール発生順になっているという仮定に基づいての話になってし
まいますが、この発生順をメール群の移動順ではなく表示順にする、すなわち表示の
上から順番に1通1通フォルダに移動することはできないのでしょうか。

余談ですが、これに関していろいろと試してみようとする過程で、手違いで送受信中
にメールをフォルダ移動させる愚行を為してしまい、結果的にフォルダAの中身はご
み箱へ消滅しました。
(予感してバックアップはとってあります。)

さらに別件で煩雑となって申し訳ないのですが、「メールをダウンロードする対象フ
ォルダ」の除外フォルダに他アカウントのメールを移動しても、それは受信処理時に
削除されるものなのでしょうか。
ここでは、空となったAフォルダを除外指定して、バックアップしたメール群をそこ
にコピーしてみたのですが、受信時にまた空となりました。

うまくまとまらない質問で失礼します。
必要な情報があればおっしゃってください。

ver5.78
OS:winXP pro SP3

[ ]
RE:43878 メール発生順の扱いについてNo.43881
秀まるお2 さん 12/12/31 11:56
 
 秀丸メールの「IMAP4的に…同期させるモード」での動作ですが、秀丸メール
側からメールサーバー側に指示するのはメールの移動/コピー/削除だけで、
メールの並び順に関しては何か指示するようなことはしてないです。

 というか、そもそもIMAP4の仕組みとして、メールの並び順をコントロールす
るような物も無かったような気がします。

 手元にiPod touchがあるのでそれでYahoo!メールを使ってテストしてみたんで
すけども、手元のiPodだと、メールの並び順は、単純にメールの日付(Date:ヘ
ッダ)順で出てきてるだけのような気がします。メールを別のフォルダに移動し
てから戻してきても並び順は同じみたいです。

 もしかしたたらYahoo!メールの場合にはIMAP4サーバーの方でメールを自動的
にソートしてて、iPodはサーバーの指示された順で表示してるだけかもしれませ
んけども…。その辺は僕もちょっと分からないです。

 もしもIMAP4サーバー上でのメールの並び順そのままで出てるだけだとしたら、
一度別のフォルダに移動してから元に戻すってやれば、結果としてそれで並び順
が最新の所に来てくれるかもしれないです。試すとしたらそれしか無いかなぁと
思います。

> 余談ですが、これに関していろいろと試してみようとする過程で、手違いで送受信中
> にメールをフォルダ移動させる愚行を為してしまい、結果的にフォルダAの中身はご
> み箱へ消滅しました。
> (予感してバックアップはとってあります。)

 受信してる最中にメールを移動すると、同期させる対象メールを覚えておく用
のファイルが同期途中で更新されて、結果としておかしなことが起こりえるよう
に思います。

 一度見直してみて、必要ならば、同期処理中はメールの移動/コピー/削除を
出来ないようにするか何か対策を考えてみます。

> さらに別件で煩雑となって申し訳ないのですが、「メールをダウンロードする対象フ
> ォルダ」の除外フォルダに他アカウントのメールを移動しても、それは受信処理時に
> 削除されるものなのでしょうか。
> ここでは、空となったAフォルダを除外指定して、バックアップしたメール群をそこ
> にコピーしてみたのですが、受信時にまた空となりました。

 今テストしてみたら現象が確認出来ました。これは、いろいろややこしい問題
があって、現状そういう仕様になってしまってるようです。

 同期対象外のフォルダであっても、そこに存在してるメールに
「X-TuruKame-UIDL:」のヘッダがある場合は、それらのメールについてはメール
サーバーと同期を取る処理(サーバー上に存在しなければ削除する処理)が働い
てしまうようです。

 これは、例えば秀丸メールの振り分け処理でメールが移動しても、そのメール
について同期を取れるようにするために、意図してそういう処理をしているよう
です。あるいは一度非同期対象フォルダに移動したメールをもう一度どこかの同
期対象フォルダに戻した時に、それがちゃんと同期されるようにするには仕方が
ない動作のような気もします。

 何かいい解決策があるといいですが、ちょっと今の段階ではいい解決策が思い
つかないです。

[ ]
RE:43881 メール発生順の扱いについてNo.43883
PlaNet さん 12/12/31 15:31
 
> もしもIMAP4サーバー上でのメールの並び順そのままで出てるだけだとしたら、
>一度別のフォルダに移動してから元に戻すってやれば、結果としてそれで並び順
>が最新の所に来てくれるかもしれないです。試すとしたらそれしか無いかなぁと
>思います。

別の75通のメールでこれをやってみましたが、状況は変わりませんでした。
しかし、iPhoneで50通を表示したときは送信メールを中心にあわせて50通が表示され、
残り25通を表示すると全てがDate順にスレッド表示されました。
この50通は、秀丸メールのメール一覧で「このフォルダ上でのメール発生順」(これ
を上の質問で明記していませんでしたね、失礼しました)としたときに新しい方から5
0通とったものと一致しました。
実際、"発生順で最も古いがDateで送信メール1通の次に新しい受信メール"がそこで
初めて表示されました。
この発生順について、一つのフォルダに送信メール、受信メールの順に移動させた場
合はその順に古くなりました。
まとめて移動させた中では順番が変わらないようです。
これを利用して受信メールを先に表示できないかと、半々にわけて別フォルダに移動
してみて発生順を入れ替えてみたのですが、同期したら元の順番に戻ってしまいまし
た…
このあたりの挙動が難解です。


> 一度見直してみて、必要ならば、同期処理中はメールの移動/コピー/削除を
>出来ないようにするか何か対策を考えてみます。

余計な操作はしないのが一番ですが、より安心して使いたいのでアラートを出すなど
すると助かります。
あと、メールを別フォルダと往復させてから同期すると消えるのですね。
1同期1移動ということでしょうか。


> 同期対象外のフォルダであっても、そこに存在してるメールに
>「X-TuruKame-UIDL:」のヘッダがある場合は、それらのメールについてはメール
>サーバーと同期を取る処理(サーバー上に存在しなければ削除する処理)が働い
>てしまうようです。

非同期フォルダに移動させてもサーバ上からメールが消えないのはそういうわけだっ
たのですね。
X-TuruKame-UIDL:ヘッダを削除すると同時にサーバ上から削除してメールを独立させ
る操作は難しいでしょうか。
その逆もできるとメールをアップロードできたりして便利かもしれませんが…

同期の処理は複雑ですね。仕組みを考えようとして頭がパンクすることが昔からよく
あります。
緊急のトラブルではありませんので、ぜひ慎重に調査していただければと思います。
それではよいお年をお迎えください。

[ ]
RE:43883 メール発生順の扱いについてNo.43884
秀まるお2 さん 13/01/01 11:50
 
 あけましておめでとうございます。新年早々ですが長文失礼します。

 とりあえず、iPhoneでのメールの並び順については別にして、他に連絡いただ
いたおかしな挙動をいろいろテストしてたら、秀丸メールのバグであることが分
かってしまいました。長文になるといけないので簡単にバグの内容を書かせてい
ただきますと、

   − IMAP4フォルダの返すINBOXフォルダ名が「Inbox」のように小文字混じ
     りだと、秀丸メールが誤動作する。
   − IMAP4サーバーの返すフォルダ一覧でのINBOXの並び順が先頭以外だと、
     これまた秀丸メールが誤動作する。
   − 誤動作する挙動としては、メールの移動/コピーについてサーバーへ
     の同期が失敗したり、もう一度同期しなおさないと秀丸メール上の
     メール一覧が更新されなかったりする。

 となってました。

 i.softbank.jpさんの場合も、少なくともINBOXのフォルダ名が小文字混じりで
あることは間違いないと思います。これのせいでおかしいことが起こってるんだ
と思います。

 この辺、次のV6.10β23の方で修正させていただきます。

> この発生順について、一つのフォルダに送信メール、受信メールの順に移動させた場
> 合はその順に古くなりました。
> まとめて移動させた中では順番が変わらないようです。

 であれば、たぶんiPhoneはIMAP4サーバーの返すメールの並び順通りにメール
を表示してるだけなのかなぁと思います。

 IMAP4サーバーの返すメールの並び順はIMAP4サーバー次第ですけども、一般的
にはサーバー(のフォルダ)にメールが追加された順になると思います。

> これを利用して受信メールを先に表示できないかと、半々にわけて別フォルダに移動
> してみて発生順を入れ替えてみたのですが、同期したら元の順番に戻ってしまいまし
> た…

 何らかの理由でIMAP4サーバー上でのメールの並び順がリフレッシュすること
があるのかもしれませんが…。そもそもiPhoneでのメールの表示順自体もどうい
うロジックなのか不明なので、その辺をコントロールするのは無理がありそうな
気がします。

> X-TuruKame-UIDL:ヘッダを削除すると同時にサーバ上から削除してメールを独立させ
> る操作は難しいでしょうか。
> その逆もできるとメールをアップロードできたりして便利かもしれませんが…

 とりあえず、同期対象フォルダから非同期対象フォルダ(あるいはサーバー上
に存在しないフォルダ)にメールを移動した時に、そのメールについて、サー
バー上のメールとのリンク関係を切るかどうか問い合わせメッセージを出すよう
にしたらいいかなぁという気がします。(リンク関係を切る場合は、サーバー上
からはそのメールは削除って扱いになりますけども)

 その逆の、一度リンク関係を切ったメールを同期対象フォルダに戻すケースに
ついては、ちゃんと同期させるためにはアップロードしないといけないですがそ
れは現状出来ないので、そういう操作は禁止させるか何か対策しないとダメかな
ぁと思います。

 それか、ちゃんと対応するためにアップロードの機能も対応するか…。APPEND
ってコマンドがあるのでそれでアップロードは出来るようではあります。

 いろいろテストしてるとボロが出てしまうようでして…。

 もっといろいろテストしながら考えさせていただきます。

[ ]
RE:43884 メール発生順の扱いについてNo.43885
PlaNet さん 13/01/01 17:31
 
明けましておめでとうございます。今年も秀丸ソフトにお世話になります。


>   − 誤動作する挙動としては、メールの移動/コピーについてサーバーへ
>     の同期が失敗したり、もう一度同期しなおさないと秀丸メール上の
>     メール一覧が更新されなかったりする。

そういうものだと思って移動のときは2回受信処理をするようにしていました(笑)。
バグだと分かってよかったです。


> IMAP4サーバーの返すメールの並び順はIMAP4サーバー次第ですけども、一般的
>にはサーバー(のフォルダ)にメールが追加された順になると思います。

どうも同期ごとにメールの発生順が確定するらしいです。
発生の古い順にABCの3通のメールがあったとして、別のフォルダにCを移動させてAB
を移動させてから同期するとABCのままでしたが、
Cを移動させて同期してABを移動させて同期すると、CABという順番に並び替えられま
した。
そうすると、Dateの古い順に1通移動するたびに同期すれば理想の表示になるわけで
すが、それには尋常でない時間とサーバへの負担を要します。
同期のときの移動処理をDate順に行うようにするとフォルダ内の順番が変わったりし
ないでしょうか。
ログを見てみましたが、現在はCOPYをUIDL順に行っているので同期ごとにしか順番が
入れ替わらないということだと認識しています。


> とりあえず、同期対象フォルダから非同期対象フォルダ(あるいはサーバー上
>に存在しないフォルダ)にメールを移動した時に、そのメールについて、サー
>バー上のメールとのリンク関係を切るかどうか問い合わせメッセージを出すよう
>にしたらいいかなぁという気がします。(リンク関係を切る場合は、サーバー上
>からはそのメールは削除って扱いになりますけども)

それだと切ったメールはサーバ上に戻せない旨を警告したほうがいいですね。
それと、IMAP4でない別アカウントから非同期フォルダにコピーした、UIDLヘッダを
持たないメールも同期時に削除されてしまいました。


> それか、ちゃんと対応するためにアップロードの機能も対応するか…。APPEND
>ってコマンドがあるのでそれでアップロードは出来るようではあります。

それができると個人としては大きな機能だと思います。
ちょっと調べただけではどのようなトラブルが発生しうるか思いつきませんでしたが、
検討をお願いしたいところです。

[ ]
RE:43885 メール発生順の扱いについてNo.43886
秀まるお2 さん 13/01/01 18:14
 
 1つ是正させていただきます。

>    − IMAP4サーバーの返すフォルダ一覧でのINBOXの並び順が先頭以外だと、
>      これまた秀丸メールが誤動作する。

 これは僕の勘違いでした。

 で、肝心のメールの並び順ですが、

> 同期のときの移動処理をDate順に行うようにするとフォルダ内の順番が変わったりし
> ないでしょうか。
> ログを見てみましたが、現在はCOPYをUIDL順に行っているので同期ごとにしか順番が
> 入れ替わらないということだと認識しています。

 秀丸メールがメールサーバーにCOPYを指示する順序は、一応、秀丸メール上で
メールの移動/コピーを指示した順序になります。ただ、実際それでテストして
も、メールサーバー上で秀丸メールが指示した順序になるかというと、たしかに
1回1回受信(=同期)させればそうなるんですが、複数メール移動してから受
信した場合はダメでした。

 実は、IMAP4サーバーにメールの移動/コピーを指示する場合、

   UID COPY (UID番号) "(フォルダ名)"

 みたいなコマンドを連続して送って、最後に

   EXPUNGE

 ってコマンドで確定させる仕組みなんですが、EXPUNGEを送ったタイミングで、
それまでCOPY指示したメールは自動的にDate:ヘッダ順か何かでソートされてし
まうようです。(Yahoo!メールでテストした場合は)

 なので、しいてうまく「UID COPY」コマンドで指示した通りに並んでくれるた
めには、1回のUID COPYの度に1回ずつEXPUNGEコマンドを送ってやるしか無い
ようです。ですが、そういうことは秀丸メールでは出来ないです。

 なので、やはり「1通移動して同期して…」を全メールの数だけ繰り返すしか
無いように思います。

 マクロを使えば出来ますけど、それでダメでしょうか。とりあえずマクロを実
行開始してあとは放置しておくってことで、メールサーバーさんには負荷がかか
るかもしれませんが、秀丸メール上で表示してる通りの並び順に、メールサー
バー上のメールも並べ替えることが出来ると思います。

■マクロの例:
    移動元フォルダ = アカウント直下の"テスト"フォルダ
    移動先フォルダ = 受信だとすると、

    loaddll "tkinfo.dll";
    #n = dllfunc("SelectFolder", "", "User\\テスト" );
    if( #n == 0 ) {
        message "テストフォルダの選択に失敗しました。";
        endmacro;
    }
Loop:
    #n = dllfunc("MailCount");
    if( #n == 0 ) {
        message "テストフォルダのメールはすべて移動しました。";
        endmacro;
    }
    #n = dllfunc("SetMailIndex", 0 );
    #n = dllfunc("DisableThreadTreeOperation");
    #n = dllfunc("Move", "", "受信");
    #n = dllfunc("Receive");
    #n = dllfunc("TransmitError");
    if( #n != 0 ) {
        message "受信でエラーが起きました。マクロを中断します。";
        endmacro;
    }
    goto Loop;

[ ]
RE:43886 メール発生順の扱いについてNo.43887
PlaNet さん 13/01/01 20:10
 
> なので、しいてうまく「UID COPY」コマンドで指示した通りに並んでくれるた
>めには、1回のUID COPYの度に1回ずつEXPUNGEコマンドを送ってやるしか無い
>ようです。ですが、そういうことは秀丸メールでは出来ないです。

試してくださってありがとうございます。
それでしたらソフトでの対応は難しいですね。


> マクロを使えば出来ますけど、それでダメでしょうか。とりあえずマクロを実
>行開始してあとは放置しておくってことで、メールサーバーさんには負荷がかか
>るかもしれませんが、秀丸メール上で表示してる通りの並び順に、メールサー
>バー上のメールも並べ替えることが出来ると思います。

そのマクロを実行したところ、とりあえず80通のメールを思い通りに並び替えること
ができて感動しました。
マクロ慣れしていないこともあって、初め自動振り分けを有効のままにしていてメー
リスに対してうまくいきませんでしたが、無効にすることで解決しました。
現在1100通ほどのメールに対して行っていますが特に問題はなさそうです。
解決策としては充分です。重宝いたします。
本当にありがとうございます。


[ ]
RE:43887 メール発生順の扱いについてNo.43908
秀まるお2 さん 13/01/08 10:15
 
 今さらのコメントになりますが、IMAP4での同期対象/非同期対象フォルダで
の各種ややこしい挙動がある点と、そもそもアップロードが出来ない点について、
対応するとしたら相当間がかかる可能性が高いので、今のところ保留させていた
だきます。

[ ]