Heim > Artikel > Backend-Entwicklung > So löschen Sie IMAP-Nachrichten mit Golang
IMAP ist ein gängiges Netzwerkprotokoll, das zum Senden und Empfangen von E-Mails verwendet wird. In Golang können E-Mails ganz einfach per IMAP gelöscht werden. In diesem Artikel erfahren Sie, wie Sie IMAP-E-Mails mit Golang löschen.
Zuerst müssen Sie die Bibliotheken „net/imap“ und „fmt“ in Golang importieren. Der Importcode lautet wie folgt:
import ( "net/imap" "fmt" )
Als nächstes müssen Sie eine Verbindung zum IMAP-Server herstellen. Sie müssen Informationen wie Serveradresse, Benutzername und Passwort angeben. Der Verbindungsaufbau kann über die Methode „Dial“ der IMAP-Bibliothek erfolgen.
conn, err := imap.DialTLS(serverAddr, nil) if err != nil { log.Fatal(err) }
Nachdem die Verbindung hergestellt wurde, müssen Sie sich beim IMAP-Server anmelden. Sie müssen Informationen wie Benutzernamen und Passwort angeben. Verwenden Sie die Methode „Login“ der IMAP-Bibliothek, um sich beim IMAP-Server anzumelden.
_, err = conn.Login(username, password) if err != nil { log.Fatal(err) }
Nach erfolgreicher Anmeldung müssen Sie die E-Mail-Adresse auswählen, von der Sie E-Mails löschen möchten. Postfächer können über die Methode „Auswählen“ der IMAP-Bibliothek ausgewählt werden.
_, err = conn.Select("INBOX", false) if err != nil { log.Fatal(err) }
Nachdem Sie Ihr Postfach ausgewählt haben, müssen Sie die E-Mails finden, die Sie löschen möchten. E-Mails können mit der „Suchen“-Methode der IMAP-Bibliothek durchsucht werden. Sie können nach E-Mail-Betreff, Absender usw. suchen.
// search for mails with 'subject' in subject and 'from' in sender criteria := imap.NewSearchCriteria() criteria.Header.Set("subject", "subject") criteria.Header.Set("from", "from") // execute search uids, err := conn.Search(criteria) if err != nil { log.Fatal(err) }
Nachdem Sie die Nachricht gefunden haben, die Sie löschen möchten, müssen Sie die Nachricht als gelöscht markieren. Nachrichten können mit der „Store“-Methode der IMAP-Bibliothek markiert werden. Bei dieser Methode müssen Sie die Sequenznummer der zu kennzeichnenden Nachricht und den Tag-Typ angeben.
// mark mails as deleted seqSet := new(imap.SeqSet) seqSet.AddNum(uids...) delFlags := []interface{}{imap.DeletedFlag} err = conn.Store(seqSet, "+FLAGS", delFlags, nil) if err != nil { log.Fatal(err) }
Abschließend müssen Sie die markierten Nachrichten löschen. Gekennzeichnete Nachrichten können mit der Methode „Expunge“ der IMAP-Bibliothek gelöscht werden.
// delete mails if err = conn.Expunge(nil); err != nil { log.Fatal(err) }
Das Folgende ist der vollständige Beispielcode zum Löschen von IMAP-E-Mails mit Golang:
package main import ( "fmt" "log" "net/mail" "github.com/emersion/go-imap" "github.com/emersion/go-imap/client" "github.com/emersion/go-message/charset" ) func main() { // Connect to the server c, err := client.DialTLS("mail.example.com:993", nil) if err != nil { log.Fatal(err) } defer c.Logout() // Login if err := c.Login("user@example.com", "password"); err != nil { log.Fatal(err) } // Select mailbox mbox, err := c.Select("INBOX", false) if err != nil { log.Fatal(err) } // Search for messages charsetReader := charset.Reader msgs := make(chan *imap.Message, 10) done := make(chan error, 1) go func() { done <- c.List("", "INBOX", msgs) }() for msg := range msgs { r := msg.GetBody(&imap.BodySectionName{section}) if r == nil { continue } if _, err := mail.ReadMessage(charsetReader(r)); err != nil { log.Fatal(err) } // Delete message seqSet := new(imap.SeqSet) seqSet.AddNum(msg.SeqNum) item := imap.FormatFlagsOp(imap.AddFlags, true) flags := []interface{}{imap.DeletedFlag} if err := c.Store(seqSet, item, flags, nil); err != nil { log.Fatal(err) } } // Expunge deleted messages if err := c.Expunge(nil); err != nil { log.Fatal(err) } if err := <-done; err != nil { log.Fatal(err) } fmt.Println("Done!") }
Das Obige ist der Prozess und das vollständige Codebeispiel zum Löschen von IMAP-E-Mails mit Golang.
Das obige ist der detaillierte Inhalt vonSo löschen Sie IMAP-Nachrichten mit Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!