2015-01-06 7 views

Antwort

3

ich herausgefunden, wie jetzt den Textkörper zu erhalten.

cmd, _ = c.UIDFetch(set, "RFC822.HEADER", "RFC822.TEXT") 

// Process responses while the command is running 
fmt.Println("\nMost recent messages:") 
for cmd.InProgress() { 
    // Wait for the next response (no timeout) 
    c.Recv(-1) 

    // Process command data 
    for _, rsp = range cmd.Data { 
     header := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.HEADER"]) 
     uid := imap.AsNumber((rsp.MessageInfo().Attrs["UID"])) 
     body := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.TEXT"]) 
     if msg, _ := mail.ReadMessage(bytes.NewReader(header)); msg != nil { 
      fmt.Println("|--", msg.Header.Get("Subject")) 
      fmt.Println("UID: ", uid) 

      fmt.Println(string(body)) 
     } 
    } 
    cmd.Data = nil 
    c.Data = nil 
} 
1

Der Beispielcode Sie verknüpft haben die Verwendung des IMAP FETCH Befehl zeigt die RFC822.HEADER Nachricht Datenelement für eine Nachricht zu holen. Der RFC contains a list of standard data items you can fetch from a message.

Wenn Sie die gesamte Mime-formatierte Nachricht (beide Header und Körper) wollen, dann BODY sollte anfordernden tun. Sie können die Header und den Nachrichtentext separat abrufen, indem Sie BODY[HEADER] bzw. BODY[TEXT] anfordern. Wenn Sie das Beispielprogramm ändern, um eines dieser Datenelemente zu verwenden, sollten Sie die Daten erhalten, nach denen Sie suchen.

+0

Dank James. Jetzt lese ich den RFC 3501, um mehr über das IMAP-Protokoll zu erfahren. Ich kämpfe immer noch darum, dass die Go-API funktioniert, um den Körper zu holen. Können Sie mir bitte ein funktionierendes Codebeispiel zeigen, das den Inhalt der Mails abruft? Vielen Dank. –

Verwandte Themen