MailKit 设置附加后看到的 MessageFlag

MailKit Set MessageFlag Seen after Append

我发送 MailKit.Message 与 MailKit.Net.Smtp.SmtpClient 异步。

然后我将邮件放入发送文件夹,但是邮件标志是看不见的。

我无法在 Message build 中设置 messageflag,只能在 Append 之后设置,但是我 发现无法将 MailKit.UniqueId? 转换为 MailKit.UniqueId.

 var folderSend = IC.GetFolder(MailKit.SpecialFolder.Sent);
 MailKit.UniqueId? te = folderSend.Append(nochmalMessage);
 folderSend.AddFlagsAsync(te, MailKit.MessageFlags.Seen, true);

te 必须是 MailKit.UniqueId

您的变量 te 具有类型 Nullable<UniqueId> 但方法 AddFlagsAsync 接受类型 UniqueId。您可以使用 te.Value 或在它之前检查 te 是否具有值:

if (te.HasValue)
    folderSend.AddFlagsAsync(te.Value, MailKit.MessageFlags.Seen, true);

每个 Append() and AppendAsync() 方法都有一个带有 MessageFlags 参数的重载。这使您可以将逻辑简化为:

folder.Append (message, MessageFlags.Seen);

await folder.AppendAsync (message, MessageFlags.Seen);

这消除了使用要在附加消息上设置的标志调用 AddFlags() 或 AddFlagsAsync() 的需要,因为它会在附加消息时设置这些标志。