【问题标题】:how to get x-gm-labels for email如何获取电子邮件的 x-gm-labels
【发布时间】:2012-04-01 11:59:29
【问题描述】:

我正在尝试了解如何为 C 语言中的电子邮件获取 gmail 标签 (x-gm-labels)。 我检查了,libetpan 的构建支持x-gm-labels 扩展。

知道如何编写示例代码将它们组合在一起吗?

【问题讨论】:

  • 你确定lib的作者检查了stackoverflow吗?直接问他们会更好吗? github.com/dinhviethoa/libetpan/commit/… 他们在 3 个月前犯了这个错误。
  • 我很确定有人试过这个。任何方向(如 IMAP 调用本身)也很有用
  • 您要求的功能存在于src/low-level/imap/xgmlabels.cits header file 中。目前还不清楚作者是如何解析这个的,除了small set of included test files。由于缺乏使用文档和可靠的示例,这是一个很好的场景,您确实应该询问作者。
  • @MrGomez 你是对的。但是我已经在我的消息中反映了与此问题相关的所有内容。

标签: c gmail gmail-imap


【解决方案1】:

知道了。通过跟踪this check-in from the original author,我发现代码焊接到libetpan 的IMAP 支持的默认处理行为中。

好吧,原来作者provides an example of how to set up an IMAP connection successfully. 不是把所有的代码都写出来,而是你应该关心的一点:

static char * get_msg_att_msg_content(struct mailimap_msg_att * msg_att,
  size_t * p_msg_size)
{
    clistiter * cur;

    /* iterate on each result of one given message */
    for(cur = clist_begin(msg_att->att_list) ; cur != NULL ;
      cur = clist_next(cur)) {
        struct mailimap_msg_att_item * item;

        item = clist_content(cur);
        if (item->att_type != MAILIMAP_MSG_ATT_ITEM_STATIC) {
            continue;
        }

    ...

根据我对代码的回溯,您的票证是struct mailimap_msg_att_item。您在此处查找的att_typeMAILIMAP_MSG_ATT_ITEM_EXTENSION,您应该从那里遍历数据结构,直到找到MAILIMAP_EXTENSION_XGMLABELS

这样的东西应该可以隔离它们:

if (item->att_type == MAILIMAP_MSG_ATT_ITEM_EXTENSION) {
    if (item->att_data.att_extension_data->ext_type == 
      MAILIMAP_EXTENSION_XGMLABELS) {
        // ... do something ...
    }
}

警告:未经测试的代码。

从这里,您可以对正在使用的结构进行更深入的询问性检查。除the test file 外,显着文件均包含在src/low-level/imap 中。祝你好运!

【讨论】:

    【解决方案2】:

    有很多 IMAP 扩展 .. 见 Gmail IMAP ExtensionsGmail Labels

    几个例子:

    List all Gmail labels

    Label message with Gmail system label

    还可以查看 MrGomez 的评论,该评论很好地解释了您所要求的功能。

    【讨论】:

    • -1 我根本看不出这对 OP 有何帮助...(除了它正在获取邮件。)
    • @RedX 我不明白你为什么投反对票。当我的回答很清楚时!?!
    • 他清楚地将他的消息标记为 C,而您正在从某个随机库中向他抛出 C# 代码 sn-ps...
    • 很明显,我对@MrGomez 的评论发表了看法!
    • 事实上,MrGomez 的评论应该是公认的答案,而不是评论。
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多