2012-04-01 9 views
1

私は、Cで電子メールのGmailラベル(x-gm-labels)を取得する方法を理解しようとしています。 libetpanサポートx-gm-labelsのビルドを確認しました。電子メールのx-gm-labelを取得する方法

サンプルコードをどのようにまとめて書き込むのですか?

+1

あなたは確かlibのチェックはstackoverflowをチェックしますか?直接に尋ねる方がよいでしょうか? https://github.com/dinhviethoa/libetpan/commit/01b2aedbd3ff8febe85beb7227f81895bb2eee3a彼らはこれを3ヶ月前に約束しました。 –

+0

私はかなり誰かがこれを試したと確信しています。どんな指示(IMAP呼び出し自体のような)も役に立つでしょう –

+1

あなたが求める機能は['src/low-level/imap/xgmlabels.c']にあります(https://github.com/dinhviethoa/libetpan/ blob/master/src/low-level/imap/xgmlabels.c)と[そのヘッダファイル](https://github.com/dinhviethoa/libetpan/blob/master/src/low-level/imap/xgmlabels.h)を参照してください。 )。著者がどのようにこれを解析しているかは不明ですが、[含まれているテストファイルの小さなセット](https://github.com/dinhviethoa/libetpan/tree/master/tests)にはありません。使い方のドキュメントと堅牢な例がないことを考えると、これは実際に著者に尋ねるべき良いシナリオです。 – MrGomez

答えて

3

this check-in from the original authorのトレースから、libetpanのIMAPサポートのデフォルト処理動作にコードが溶けていることがわかりました。あなたのチケットはstruct mailimap_msg_att_itemで、コードの私のバックトレースによると

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; 
     } 

    ... 

まあ、それはここで、著者provides an example of how to set up an IMAP connection successfully.代わりのコードのすべてを出しスプールが判明あなたが関係しなければならないビットです。ここで探している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に含まれています。がんばろう!

+0

これは非常によくMrGomezです、よくできました。 –

0

IMAP拡張の多くはGmail IMAP ExtensionsGmail Labels

いくつかの例を参照。..あります

List all Gmail labels

Label message with Gmail system label

がまた良いexplinationを与えるMrGomezのコメントをチェックあなたが求めている機能について

+0

-1どうすればOPを助けることができるかわかりません(メールを取り出すことを除いて) – RedX

+0

私は最後の更新の参照を入れます –

+0

@RedX私の答えがかなり澄んでいるとき!、! –

関連する問題