Ich holte erfolgreich eine Liste von E-Mail-Header des Beispielcode aus diesem URL: https://godoc.org/code.google.com/p/go-imap/go1/imap#example-Client. Allerdings konnte ich den Text der E-Mails immer noch nicht abrufen. Kann jemand einen funktionierenden Beispielcode zeigen, der den Körper der E-Mails von einem Imap-Server in Golang holen könnte?Wie Körper von imap Server in Geht zu holen
5
A
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.
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. –