【问题标题】:Imap Fetch CommandImap 获取命令
【发布时间】:2014-07-04 12:00:50
【问题描述】:

我正在使用以下 C# 代码检索邮件的标题,但我想对其进行修改,以便它可以告诉我邮件是否包含任何附件,但是我不想加载带有附件的完整邮件

var command = string.Format("FETCH {0} (FLAGS UID BODY[HEADER])", i);
Clean();
SendCommand(command);
var sizeLine = ReadLine();

我尝试了以下方法

这会检索完整的消息或根本不起作用,我也在 rfc 网站上工作,但似乎找不到它的命令

var command = string.Format("FETCH {0} (FLAGS UID BODY.PEEK[])", i);
var command = string.Format("FETCH {0} (FLAGS UID BODY[])", i);
var command = string.Format("FETCH {0} (FLAGS UID BODY[HEADER,MIME])", i);
var command = string.Format("FETCH {0} (FLAGS UID BODY[MIME])", i);

【问题讨论】:

    标签: c# imap


    【解决方案1】:

    您要查找的命令是UID FETCH ... BODYSTRUCTURE。看到响应后,您可能希望考虑使用库为您进行解析。 C# 至少有两个候选人,MailKit 和一个叫做 IIRC,mailsystem.net 的东西。先试试 mailkit。

    【讨论】:

    • 我已经解析正确:),将尝试这条命令,我以为我完成了我的 Imap 库但注意到我无法显示 GridView 来显示哪些邮件有附件,哪些没有,除非我获取了完整的邮件消息
    【解决方案2】:

    也许你忘了在 FETCH 命令前加上 UID:

    string tag = GetTag();
    string response = SendCommandGetResponse(tag + "UID FETCH " + uid + " (BODY" +
                        (seen ? null : ".PEEK") + "[HEADER])", false);
    

    来自S22 ImapClient.cs

    【讨论】:

    • 没有 UID 应该在我放置的位置,然后我得到以下结果,“* 36 FETCH (FLAGS (\\Recent) UID 707 BODY[HEADER] {1657}\r\ n" 当我从服务器获取带有正文的完整消息时,我使用 UID FETCH 707 BODY[]
    • SendCommand(string.Format("UID FETCH {0} (FLAGS UID BODY[])", message.Uid));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2014-03-22
    • 2015-03-28
    • 2014-06-10
    • 2011-06-12
    • 2011-12-12
    相关资源
    最近更新 更多