受信トレイからメッセージを削除しようとしています。メッセージにmessageIdがありません(Gmail ではありません)
このトピックで解決策を見つけました
MailSystem.Net 削除メッセージ、IndexOnServer プロパティ = 0
しかし、それは私にはうまくいきません。
以下のコードは、アプリケーションが MVVM ライト アプリケーションとして機能するように単純化されています。
これが私がメールを受け取る方法です。
for (int i = 1; i <= mails.MessageCount; ++i)
{
Message msg = fetch.MessageObject(i);
MessageModel tmpMsg = new MessageModel() { messageType = MessageModel.MessageType.INBOX, UID = i, Date = msg.Date, Body = content, Title = msg.Subject, Sender = msg.From.Merged, Receiver = msg.To[0].Merged, IsEncrypted = isEncrypted };
tmpMsg.MessageWasDeleted += tmpMsg_MessageWasDeleted;
InboxMessages.Messages.Add(tmpMsg); //this is observable collection of MessageModel
}
このコードをテストしたところ、適切な ID が messageModel オブジェクトに追加されました。
メッセージを削除したい場合は、モデルで次のコードを使用します。
var imapClient = new Imap4Client();
imapClient.BeginConnect(ConfigurationManager.AppSettings["mail_smtp_host"], ConfigurationManager.AppSettings["mail_smtp_login"], ConfigurationManager.AppSettings["mail_smtp_password"], new AsyncCallback((res) =>
{
imapClient.EndConnect(res);
//var box = imapClient.AllMailboxes["INBOX"] ;
var box = imapClient.SelectMailbox("INBOX");
Message email = box.Fetch.MessageObject(UID); //this is just to check if proper message is going to be deleted
box.UidDeleteMessage(UID, true);
if (MessageWasDeleted != null) MessageWasDeleted(this, new EventArgs());
}));
このメソッドは、UID に基づいてメッセージを削除します (少なくとも削除する必要があります) が、そうではありません。エラーは何も表示されません。
どこでエラーを起こすことができますか? ActiveUpMail を使用してメッセージを削除する適切な方法は何ですか?