The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 記事閲覧
アイコン IMAPサーバでのメール削除
日時: 2018/05/08 12:34
名前: ukimer

当方、VB2017(VS2017)にてTKMP.DLLを使ってIMAPサーバの
メールをハンドリングするプログラムを書いています。
サンプル等を拝見してGmailのIMAPサーバから「メールの受信」
「添付ファイルの取得」は出来るようになったのですが、
その後に「受信し終えたメールを削除」としたいと思っております。
 
コンテンツの「TKMP.DLL プログラミングTips」に
「メールボックスからメールを削除する」のサンプルが掲載されて
いますが、
http://uwa.potetihouse.com/samplecode/tkmp/deletemail.html
こちらは、POPサーバでのサンプルと理解しております。
POPサーバとIMAPサーバでは、
「メール削除を実行する」

「メールに削除フラグを立てる。その後IMAPサーバからログアウト
すると削除される」
という違いがあると思っています。
ですが、その記述方法が解っておりません。
どちらかの方で、上記のようにIMAPサーバでの
「メールに削除フラグを立てる」等を実施し、
IMAPサーバから指定のメールを削除する方法の 
サンプル等がございましたら、お教え頂けないでしょうか?

よろしくお願いします。
メンテ

Page: 1 |

ファイル Re: IMAPサーバでのメール削除 ( No.1 )
日時: 2018/05/10 08:35
名前: TT

IMAPでの接続時も
MailData_ImapクラスのDeleteメソッドで削除できます。
内部では「Deleted」フラグがセットされます。

ただし、Gmailの削除処理は他とは違って
Trashフォルダへ移動することで削除扱いになったはずです。
メンテ
ファイル Re: IMAPサーバでのメール削除 ( No.2 )
日時: 2018/05/10 11:06
名前: ukimer

TTさま

 早速のご返答をありがとうございます。
 先のPOPサーバでのサンプル
 http://uwa.potetihouse.com/samplecode/tkmp/deletemail.html
 では、以下のように
 
 'メールの削除
 Dim DeleteNumber As Integer = 1 ' 削除するメールのインディックス
 Dim Mail As TKMP.Net.MailData = pop.MailDatas(DeleteNumber)
 Mail.Delete()

 1行目 削除するメールのインデックス この場合は1を指定
 2行目 POPサーバでのサンプルなので、MailData_Imapではなく
     MailData クラスを使い、pop.MailDatasにインデックスの1番目を
     指定する。
 3行目 Deleteメソッドで削除
 
 と記載していると理解しております。
 
 この内容を当方は、
 'メールの削除
 Dim Mail As TKMP.Net.MailData_Imap = client.MailDatas(1)
 Mail.Delete()
 としております。

 clientはImapClientの変数です。
 POPサーバと同様に、
 「インデックス等で”何番目のメール”と明示的に指示する
 必要がある」と思っていて、 = client.MailDatas(1) として
 おりますが、VSからコンパイルエラーで
 「MailDatasはImapClientのメンバーでない」旨が発生します。
 
 上記のように「何番目のメール」を明示的に指示する必要がなく
 'メールの削除
 Dim Mail As TKMP.Net.MailData_Imap
 Mail.Delete()
 として、またGmailの場合は
 Dim Mail As TKMP.Net.MailData_Imap
 Mail.移動メソッド()
 ということでしょうか?
 
 上記で理解が正しいとしたら、
 申し訳ないですが、
 http://uwa.potetihouse.com/library/tkmp/document/html/AllMembers_T_TKMP_Net_MailData_Imap.htm
 をみたのですが、移動メソッドに該当するのものどれなのか、解りませんで、教えて頂けないでしょうか。
 
 よろしくお願いします。
 
 

メンテ
ファイル Re: IMAPサーバでのメール削除 ( No.3 )
日時: 2018/05/10 11:29
名前: TT

>「MailDatasはImapClientのメンバーでない」旨が発生します。

Imapはフォルダ構造を持っているので、
ImapClientからGetMailBoxかFindMailboxでMailboxのインスタンスを取得して
その中のMailDatasを操作する必要がありますよ
メンテ
ファイル Re: IMAPサーバでのメール削除 ( No.4 )
日時: 2018/05/10 12:47
名前: ukimer

TTさま

 下記のように理解して修正したところ、Gmailからメールの削除が
 できました。

Dim mail_box
mail_box = client.GetMailBox(0).MailDatas(0)
Dim Mail As TKMP.Net.MailData_Imap = mail_box
Mail.Delete()

 2行目
GetMailBoxの0番目(GmailのINBOXを指し示している)の
  MailDatasの0番目(INBOX内の最初のメール)
 4行目
  Deleteメソッドを実行

 

ご助言をありがとうございました。

以上 
 

   
メンテ

Page: 1 |

題名 スレッドをトップへソート (必ず題名内に日本語を使用してください)
名前
E-Mail
URL
パスワード (記事メンテ時に使用)
コメント 顔smile01.gif 顔smile02.gif 顔smile03.gif 顔smile04.gif 顔smile05.gif 顔smile06.gif 顔smile07.gif

   クッキー保存