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