Outlookで古いメール1件を取得する方法

いつもお世話になっております。

表題の件ですが、Outlookメッセージを取得アクティビティで1件取得しようとすると
新しいメールから取得されてしまいます。
これを古いメールから取得したいのですが、可能なのでしょうか?

このアクティビティの出力は、List方ですので、以下の方法でListの最後の情報が取得できます(出力のメッセージ欄に、Mailという変数を用意している)。

Mail(Mail.Count - 1).Subject.toString
↑最後のSubjectを取得している。

@HANACCHI

度々ご回答頂きありがとうございます。

ご教示頂いた方法だと、最初に取得する件数を未読メッセージの数より多くしておかないといけないと思います。
例えば上限数を100としたとき、(運用上発生しないとは思いますが)101件メールが来ていた場合
一番古いメールは漏れると思います。
これが微妙ですので、フィルタープロパティで実現不可能かなと思った次第ですが、どう思われますでしょうか…?

フィルターは、さんざんトライしてみたのですが、なかなか思うような結果が得られず。。。

Outlookメッセージを取得アクティビティの出力件数を5件ほどにしておき、
1)アクティビティ発行
2)取得したMailを、全Mailの領域へ加算(?)する
image
コレクションには、MailMessage型の「M」を指定
3)1~2までを、アクティビティ発行して取得したMailの件数が0まで繰り返す。
4)Listの最後が、最古のMail

って、こんなのでは、ダメですかねぇ。机上の空論。。。

@HANACCHI

なるほど、、可能そうな感じがします。
現状メール1件取得し、既読にして処理完了としていたので処理したメールを移動で対応し
Outlookの元々の制御で業務で使用するメールしかこないように設定する必要がありそうですね。

前のメールから処理したい、は要望としてかなりありそうなのでプロパティで実現してほしいですね笑

前に考えた方法は、

1)事前に処理用フォルダをOL側に作成しておく(これをPreViewとかにする)
2)受信トレイから、未読メール(既読にしない)を先のフォルダに移動させる
3)そのフォルダから一覧を取得し、Subjectから対象とするメール以外を受信トレイに移動する
4)PreViewに残ったメールが対象メールとなるので、今一度PreViewフォルダから一覧を取得(未読メールを既読にする)し、処理。
5)全メール処理後、PreViewに残ったメールを受信トレイに移動する

なんて取っても煩雑ものです。

上限数を 99999にするか、Int32.MaxValueにすればいいように思いますが…

@HANACCHI

似たようなことを先程考えました。笑
古いメールから処理したほうがいいのではないかというのは私が思いついただけなので、
一度先方に確認しようと思います。
ありがとうございます。

1 Like

多分セッションをずっと握ってしまって、案配悪いような…

@Legacy32

ご回答頂きありがとうございます。
その場合、いったん既読にせずに古いメールが決まった段階でinvoke codeか何かで既読にする認識で正しいでしょうか?

タイトルの「Outlookで古いメール1件・・・」

上記から、「Outlookメッセージを取得アクティビティ」で取得するのは未読メッセージのみで、かつその中で最古(または最古から遡る)のメールでいいと判断しました。

対象となる古いメール1件に対する一連の処理が完了したら既読にします。(処理途中にエラーで失敗することを考慮)

2 Likes

@Legacy32

おっしゃる通り、未読メッセージのみかつ最古のメールが取得対象です。
処理が最後まで完了したメールはフォルダ移動させようと思っていたので、ご教示頂いた内容と組み合わせて実装しようと思います。
ありがとうございました。

1 Like

実装したら、事例として返信いただければ幸甚です。それと解決策にチェックもお願いしますね。

1 Like

@HANACCHI

もちろんです!もう少々お待ちください。

追記
本件以下の内容で対応しました。
①Outlookメッセージを取得で未読メール全件取得
②作成されたListに対し日時でソートし古いメール一件取得
③メール1件を別フォルダに移動
④移動先フォルダでOutlookメッセージを取得

MailMessage型に対してInvokeCodeで既読にするのが理想だったのですが、
不可能みたいでしたので移動後取得で実装致しました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.