MailKit 设置附加后看到的 MessageFlag

Posted

技术标签:

【中文标题】MailKit 设置附加后看到的 MessageFlag【英文标题】:MailKit Set MessageFlag Seen after Append 【发布时间】:2019-04-24 21:04:29 【问题描述】:

我使用 MailKit.Net.Smtp.SmtpClient 发送 MailKit.Message Async。

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

我无法在消息构建中设置消息标志,只能在附加之后,但我 找不到将 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

【问题讨论】:

【参考方案1】:

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

folder.Append (message, MessageFlags.Seen);

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

您的解决方案是正确的,但还有一个更简单的解决方案,因为 Append/AppendAsync 方法也采用可选的 MessageFlags 参数,因此无需调用 AddFlags 或 AddFlagsAsync :-)

以上是关于MailKit 设置附加后看到的 MessageFlag的主要内容,如果未能解决你的问题,请参考以下文章

使用RSASSA-PSS和RSAES-OAEP与MailKit

MailKit---状态更改和删除

Mailkit 第一步问题 c#

愚公系列2023年02月 .NET CORE工具案例-使用MailKit使用SMTP协议进行邮件发送

使用MailKit发送邮件

收发邮件之 MAILKIT