IMAPサーバでのメール削除 その後 |
- 日時: 2018/05/25 16:46
- 名前: ukimer
- 先に「IMAPサーバでのメール削除」のスレッドでお世話になった者です。
その節は的確なアドバイスをありがとうございました。
前スレッドにて、助言頂いた結果、 gmailのIMAPサーバ機能について @IMAPサーバ接続 Aメール読み込み B添付をファイルとして保存 C読み込み済みのメールをIMAPサーバから削除 と、全ての実装したい機能を実現出来ました。
続いて、作成したプログラムを当方のテスト環境ではなく、 本番環境へ持ち込み本番のIMAPサーバから上記の実装機能を 実行したところ、C以外は正常に動作する事が確認出来ました。
Cの機能は前スレッド「IMAPサーバでのメール削除」の 最期に当方が投稿した Dim mail_box mail_box = client.GetMailBox(0).MailDatas(0) Dim Mail As TKMP.Net.MailData_Imap = mail_box Mail.Delete() の部分です。
gmailのIMAPサーバでは、 mail_box = client.GetMailBox(0).MailDatas(0) の実行は問題なく処理されますが、 本番環境のIMAPサーバでは、 mail_box = client.GetMailBox(0).MailDatas(0) を実行すると 「System.IndexOutOfRangeException: インデックスが配列の境界外です。」 が表示されてしまい、次の Dim Mail As TKMP.Net.MailData_Imap = mail_box Mail.Delete() が実行されませんでした。
本番環境でのIMAPサーバは、UnixOS上で稼働しているDOVECOTの2.0.9と いうバージョンでした。
上記のケースでは、当方から本番IMAPサーバのメールアドレスに 添付ファイルを付けてメールを送信し、その後、受信、添付をファイルとして 保存、最期にメールの削除を行うという流れで処理が進みます。 その際に、最期のメールの削除の部分でエラーが発生します。
ところが、当方からの送信メールに添付ファイルを付けずに 本番IMAPサーバのメールアドレスにメール送信した場合には、 受信、添付ファイルが無いのでファイル保存を行わずにメール削除を 行うという流れではエラーが発生しません。エラーが発生しない場合でも エラーが発生する場合と同じく Dim mail_box mail_box = client.GetMailBox(0).MailDatas(0) Dim Mail As TKMP.Net.MailData_Imap = mail_box Mail.Delete() と実行しているのに、添付ファイルが無い場合には 「System.IndexOutOfRangeException: インデックスが配列の境界外です。」 が発生しません。
・gmailで採用しているIMAPサーバとDOVECOTのIMAPサーバでは GetMailBox、またはMailDatasで設定方法等が違う? ・添付ファイルの有り、無しでも GetMailBox、またはMailDatasで、設定方法等が違う?
と思っておりますが、 上記について、何か思い当たる事やアドバイスなど聞かせて頂けないでしょうか。
よろしくお願いします。
|
|