So löschen Sie IMAP-Nachrichten mit Golang

PHPz
Freigeben: 2023-04-05 10:41:06
Original
1335 Leute haben es durchsucht

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.

Schritt 1: Importieren Sie die erforderlichen Bibliotheken

Zuerst müssen Sie die Bibliotheken „net/imap“ und „fmt“ in Golang importieren. Der Importcode lautet wie folgt:

import (
    "net/imap"
    "fmt"
)
Nach dem Login kopieren

Schritt 2: IMAP-Verbindung herstellen

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)
}
Nach dem Login kopieren

Schritt 3: Melden Sie sich beim IMAP-Server an

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 dem Login kopieren

Schritt 4: E-Mail-Adresse auswählen

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)
}
Nach dem Login kopieren

Schritt fünf: E-Mails durchsuchen

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)
}
Nach dem Login kopieren

Schritt 6: Markieren Sie die Nachricht als gelöscht

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)
}
Nach dem Login kopieren

Schritt sieben: Markierte Nachrichten löschen

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)
}
Nach dem Login kopieren

Vollständiges Codebeispiel

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!")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage