Graph API のアーカイブNo.06938
hirn さん 20/07/08 10:02
 
秀丸メール v6.94 (x64) + ビューア v3.22 です。

 受信したメールをサーバ上に残す
  一定期間置いてからアーカイブ
  ダウンロード済みメールの移動先をアーカイブにする

の設定で便利に使用しています(ご対応ありがとうございました)。

 しかし、最近、アーカイブしようとすると 404 を返すようになりました。
直前のやり取りを見ると、↓のようになっています。
yy の値は、日に日に増えてきています。
inbox のメール数は nn より少ないので、無いメールを見ているかもです。

〜〜〜〜ここから
開始時刻: xxxx
****受信:xxxx
I OAuth認証 - 1分前に済み
I メール一覧を取得中 - inbox
GET /mailFolders/inbox/messages/delta?$deltatoken=xxxx
HTTP 200 OK  (369バイト)
I (サーバー上のメール通数=nn)
I 削除対象=yy
I 古いメールをアーカイブ中 (1/yy)
POST /messages/xxxx/move
S ...(27バイト)
HTTP 404 Not Found  (302バイト)
...

[ ]
RE:06938 Graph API のアーカイブNo.06940
秀まるお2 さん 20/07/08 11:55
 
 毎度お手数かけてすみません。

 今簡単にテストした限りは再現しなかったんですが、とりあえずの復旧方法として、
秀丸メールのデータ用フォルダ配下にあるアカウント用フォルダ配下の、

    uidl_del.bin

 ってファイルがあれば、それを削除すれば、とりあえず「yy」の部分が減らないの
はなんとか回復してくれると思います。

 このファイルは削除対象メールのIDを覚えておく用のファイルなんですが、普通は
「受信」コマンドなどでサーバー上から削除する動作が実行された後にはファイル自
体が削除されるはずになります。

 削除の操作でサーバーから「404 Not Found」が返ってもまったく無視して続行す
るようになってました。なので、

 1.404 Not Foundが返る理由
 2.仮にそうなったとして、uidl_del.binが削除されない理由

 の両方ともちょっと分からないです。

 もしかしてアーカイブ用のフォルダも受信対象に指定してるとおかしくなりますが、
そういう設定には出来ないようにしてるはずです。(同期対象に「アーカイブ」を指
定してOKするとエラーになるはず)

 ってことでちょっと分からないですが、とりあえずuidl_del.binファイルを手で削
除する作戦で復旧するかどうかだけやってみて欲しいです。

[ ]
RE:06940 Graph API のアーカイブNo.06943
hirn さん 20/07/09 15:51
 
 ご回答、ありがとうございます。

 フォルダ以下にある "uidl" という名前のファイルは、以下2つでした。
 UIDL.bin
 uidldelta_inbox.bin

>    uidl_del.bin
というファイルは、ありませんでした。

[ ]
RE:06943 Graph API のアーカイブNo.06944
秀まるお2 さん 20/07/09 18:02
 
 すみません。また勘違いがありました。

 「削除されたメールは次回受信時にサーバー上からも削除する」がONの場合だと、
uidl_del.binが生成されるんですが、今回はそれじゃなくて、「一定期間置いてか
ら・・・」の方でした。

 この場合は、「yy」の値が日に日に増えていく理由がちょっと分からないです
が・・・。削除に失敗したらまた次回削除しようとするのか・・・。

 もしかしたら、秀丸メールが移動しなくても、Exchange Online側の設定か何かで
勝手にアーカイブされてるとか・・・。それで削除に失敗するのかもしれませんが。

 僕の所でもMicrosoft 365のアカウントに大量メールが届くようにしてしばらくテ
ストしてみます。

[ ]
RE:06944 Graph API のアーカイブNo.06951
秀まるお2 さん 20/07/13 08:30
 
 今日テストしたら再現できました。とりあかず2通のメールが毎回アーカイブ失敗
になってるようです。

 なんとか原因究明して修正させていただきます。

[ ]
RE:06951 Graph API のアーカイブNo.06952
秀まるお2 さん 20/07/14 08:54
 
 根本的な原因として、最近になってだと思うのですが、Graph APIで取得する時に、
同じメールのIDが重複して届く場合があるように思います。それのせいでおかしくな
ってるような気がします。

 (メールのIDが重複して届くかどうかは検証できてませんが)

 「アーカイブする」のオプション追加(およびそのオプションがONかどうか)には
関係ないと思います。

 とりあえずそういう場合にうまく内部情報(uidldelta_xxxxx.txtファイル類)を
修復するように修正して、一回β版(V6.95β3)としてアップロードさせていただき
ます。

 現状でも、OAuth認証しなおしすると、uidldelta_xxxxx.txtファイル類がリセット
されて、おかしい状態が修復されます。ただし、メール一覧をゼロから取得しなおす
形になるので、最初の受信だけ時間がかかります。

[ ]