无法将 Mailkit 中的电子邮件从一个文件夹移动到另一个文件夹

问题描述 投票:0回答:1

我正在使用 MailKit 的 ImapClient,并在阅读邮件后尝试将邮件从文件夹 A 移动到文件夹 B,但邮件未移动并且仍然存在于文件夹 A 中。问题是什么?

这是我的代码:

using (var client = new ImapClient())
{
    client.Connect(_config.SmtpServer, _config.Port, true);
    client.Authenticate(_config.UserName, _config.Password);
    client.Inbox.Open(MailKit.FolderAccess.ReadWrite);
    var inbox = client;

    var archive = inbox.GetFolder("B");
    archive.Open(FolderAccess.ReadWrite);

    var A = inbox.GetFolder("A");
    A.Open(FolderAccess.ReadWrite);

    for (int i = 0; i < A.Count; i++)
    {
      if (!A.IsOpen)
          A.Open(FolderAccess.ReadWrite);
      MimeMessage message = A.GetMessage(i);
      //reading email
      //....
      A.MoveTo(i, archive); //this line doesn't affect the message
    }

    client.Disconnect(true);
}

函数 A.MoveTo(i, archive) 不会移动电子邮件。

如果您能在这种情况下帮助我,谢谢。

c# email directory mailkit
1个回答
0
投票

问题在于您使用

MoveTo
方法的方式。
MoveTo
方法将
UniqueId
作为其第一个参数,而不是索引。

您应该使用

GetUniqueId
方法获取消息的唯一 ID,然后将其传递给
MoveTo
方法

for (int i = 0; i < A.Count; i++)
{
  if (!A.IsOpen)
  A.Open(FolderAccess.ReadWrite);
  MimeMessage message = A.GetMessage(i);
  //reading email
  //....

  var uid = A.GetUniqueId(i);
  A.MoveTo(uid, archive); 
}
© www.soinside.com 2019 - 2024. All rights reserved.