2012-04-01 2 views
1

Je suis en train de comprendre comment puis-je obtenir des étiquettes gmail (x-gm-labels) pour un e-mail en C. J'ai vérifié, que les versions de libetpan support x-gm-labels extension.comment obtenir x-gm-étiquettes pour l'email

Une idée comment écrire un exemple de code pour tout mettre ensemble?

+1

Etes-vous sûr que les auteurs de la bibliothèque vérifient stackoverflow? Peut-être vaut-il mieux leur demander directement? https://github.com/dinhviethoa/libetpan/commit/01b2aedbd3ff8febe85beb7227f81895bb2eee3a ils l'ont commis il y a 3 mois. –

+0

Je suis assez sûr que quelqu'un a essayé cela. Toutes les directions (comme les appels IMAP) seront aussi utiles –

+1

La fonctionnalité que vous demandez existe dans ['src/low-level/imap/xgmlabels.c'] (https://github.com/dinhviethoa/libetpan/ blob/master/src/bas-niveau/imap/xgmlabels.c) et [son fichier d'en-tête] (https://github.com/dinhviethoa/libetpan/blob/master/src/low-level/imap/xgmlabels.h). Il n'est pas clair comment l'auteur analyse ceci, à court de [petit ensemble de fichiers de test inclus] (https://github.com/dinhviethoa/libetpan/tree/master/tests). Étant donné le manque de documentation d'utilisation et d'exemples robustes, il s'agit d'un bon scénario où vous devriez, en effet, demander à l'auteur. – MrGomez

Répondre

3

Vous l'avez. À partir du suivi this check-in from the original author, j'ai découvert le code soudé dans le comportement de gestion par défaut de la prise en charge IMAP libetpan.

Eh bien, il se trouve l'auteur provides an example of how to set up an IMAP connection successfully. Au lieu de spoule sur tout le code, voici le bit, vous devriez être concerné par:

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

    ... 

Selon mon backtrace du code, votre billet est struct mailimap_msg_att_item. Le att_type que vous cherchez ici est MAILIMAP_MSG_ATT_ITEM_EXTENSION, et à partir de là, vous devez parcourir les structures de données jusqu'à ce que vous trouviez MAILIMAP_EXTENSION_XGMLABELS.

Quelque chose comme cela devrait les isoler:

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

(Attention:. Code non testé)

A partir de là, vous pouvez effectuer plus en profondeur l'inspection interrogative des struct utilisé. Les fichiers saillants sont tous contenus dans src/low-level/imap, à l'exception de the test file. Bonne chance!

+0

c'est très bien MrGomez., Bien fait. –

0

Il y a beaucoup d'extensions IMAP .. voir Gmail IMAP Extensions et Gmail Labels

quelques exemples:

List all Gmail labels

Label message with Gmail system label

Vérifiez également le commentaire de MrGomez qui donne une bonne explination à propos de la fonctionnalité que vous demandez.

+0

-1 Je ne vois pas du tout comment cela peut aider l'OP ... (Sauf que c'est aller chercher du courrier.) – RedX

+0

je mets la référence de la dernière mise à jour –

+0

@RedX Je ne comprends pas pourquoi vous votez vers le bas ., quand ma réponse est assez claire!?! –

Questions connexes