2012-04-01 7 views
1

Ich versuche zu verstehen, wie bekomme ich gmail labels (x-gm-labels) für eine E-Mail in C. Ich überprüfte, dass Builds von libetpan Unterstützung x-gm-labels Erweiterung.wie bekomme ich x-gm-labels für email

Irgendeine Idee, wie man einen Beispielcode schreibt, um alles zusammen zu setzen?

+1

Sind Sie sicher, dass die Autoren der lib check stackoverflow? Vielleicht ist es besser, sie direkt zu fragen? https://github.com/dinhviethoa/libetpan/commit/01b2aedbd3ff8febe85beb7227f81895bb2eee3a haben sie dies vor 3 Monaten begangen. –

+0

Ich bin mir ziemlich sicher, dass jemand das versucht hat. Alle Richtungen (wie IMAP-Aufrufe selbst) werden ebenfalls nützlich sein. –

+1

Die Funktionalität, nach der Sie fragen, existiert in ['src/low-level/imap/xgmlabels.c'] (https://github.com/dinhviethoa/libetpan/ blob/master/src/low-level/imap/xgmlabels.c) und [seine Header-Datei] (https://github.com/dinhviethoa/libetpan/blob/master/src/low-level/imap/xgmlabels.h). Es ist unklar, wie der Autor dies analysiert, kurz vor dem [kleinen Satz von eingeschlossenen Testdateien] (https://github.com/dinhviethoa/libetpan/tree/master/tests). Angesichts des Mangels an Nutzungsdokumentation und robusten Beispielen ist dies ein gutes Szenario, in dem Sie den Autor tatsächlich fragen sollten. – MrGomez

Antwort

3

Verstanden. Von der Verfolgung this check-in from the original author entdeckte ich den Code, der in das Standardhandhabungsverhalten von libetpan IMAP-Unterstützung geschweißt wurde.

Nun stellt sich der Autor aus provides an example of how to set up an IMAP connection successfully. statt Spooling den gesamten Code aus, hier ist das Bit Sie sollten besorgt sein:

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

    ... 

Nach meiner Backtrace des Codes, Ihr Ticket ist struct mailimap_msg_att_item. Die att_type, die Sie hier suchen, ist MAILIMAP_MSG_ATT_ITEM_EXTENSION, und von dort sollten Sie die Datenstrukturen gehen, bis Sie MAILIMAP_EXTENSION_XGMLABELS finden.

So etwas sollte sie isolieren:

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

(. Achtung: ungetesteten Code)

Von hier aus können Sie tiefer Fragewort Inspektion der structs ausführen verwendet wird. Die hervorstechenden Dateien sind alle in src/low-level/imap enthalten, mit Ausnahme von the test file. Viel Glück!

+0

das ist sehr gut MrGomez., Gut gemacht. –

0

Es gibt eine Menge von IMAP-Erweiterungen .. siehe Gmail IMAP Extensions und Gmail Labels

einige Beispiele:

List all Gmail labels

Label message with Gmail system label

auch den Kommentar von MrGomez überprüfen, die eine gute explination gibt über die Funktionalität, die Sie fragen.

+0

-1 Ich sehe nicht, wie dies überhaupt dem OP helfen kann ... (Außer, dass es Mail holt.) – RedX

+0

Ich habe die Referenz des letzten Updates –

+0

@RedX Ich verstehe nicht, warum Sie unten abstimmen ., wenn meine Antwort ziemlich klar ist!?! –

Verwandte Themen