[正文或邮件包含使用MailKit的方法

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

我正在使用MailKit通过Imap接收邮件。

现在我需要该软件的搜索逻辑,但遇到了一些麻烦。

例如,我使用:

var query = SearchQuery.BodyContains("SomeTextfromEmail");
( or var query = SearchQuery.MessageContains("SomeTextfromEmail"); )

foreach (UniqueId uid in imapfolder.Search(query)){
  //some logic
}

因此,我无法通过搜索过滤器获得包含文本的邮件。我已下载消息(message.WriteTo(string.Format(@“ C:{0} .eml”,uid));)并查看消息内容。消息文本为base-64格式。

如何正确执行?我需要从base64解码消息文本吗?

c# imap mailkit
1个回答
0
投票

您的问题是一个混乱的混乱局面(您的问题开始时是说您正试图弄清楚如何搜索,然后最后要询问如何对存储到文件中的原始消息进行base64解码),所以我不知道正是您想知道的。

如果您只需要解码后的文本正文,则可以执行此操作:

var message = imapfolder.GetMessage (uid);
var text = message.TextBody;

这是已解码的文本字符串(如果需要,可以是base64解码或带引号的可打印解码)。

MimeKit READMEFAQ都充满了有关如何使用它们的基础知识。我强烈建议您阅读它们,因为它们可能会有所帮助。

更新:

基于添加到我的答案中的评论,它听起来像这是您想要做的吗?

var matched = new UniqueIdSet ();
foreach (var uid in folder.Search (SearchQuery.BodyContains ("iPhone"))) {
    var message = folder.GetMessage (uid);
    var body = message.TextBody;

    if (body != null && body.Contains ("Received from iPhone"))
        matched.Add (uid);
}
© www.soinside.com 2019 - 2024. All rights reserved.