Maison > développement back-end > Golang > le corps du texte

Comment supprimer le courrier IMAP à l'aide de Golang

PHPz
Libérer: 2023-04-05 10:41:06
original
1268 Les gens l'ont consulté

IMAP est un protocole réseau courant utilisé pour envoyer et recevoir des e-mails. Dans Golang, les e-mails peuvent être facilement supprimés en utilisant IMAP. Cet article explique comment supprimer les e-mails IMAP à l'aide de Golang.

Étape 1 : Importez les bibliothèques nécessaires

Tout d'abord, vous devez importer les bibliothèques "net/imap" et "fmt" dans Golang. Le code d'importation est le suivant :

import (
    "net/imap"
    "fmt"
)
Copier après la connexion

Étape 2 : Établir une connexion IMAP

Ensuite, vous devez établir une connexion au serveur IMAP. Vous devez fournir des informations telles que l'adresse du serveur, le nom d'utilisateur et le mot de passe. La connexion peut être établie à l'aide de la méthode "Dial" de la bibliothèque IMAP.

conn, err := imap.DialTLS(serverAddr, nil)
if err != nil {
    log.Fatal(err)
}
Copier après la connexion

Étape 3 : Connectez-vous au serveur IMAP

Une fois la connexion établie, vous devez vous connecter au serveur IMAP. Vous devez fournir des informations telles que le nom d'utilisateur et le mot de passe. Utilisez la méthode "Connexion" de la bibliothèque IMAP pour vous connecter au serveur IMAP.

_, err = conn.Login(username, password)
if err != nil {
    log.Fatal(err)
}
Copier après la connexion

Étape 4 : Sélectionnez une adresse e-mail

Après vous être connecté avec succès, vous devez sélectionner l'adresse e-mail à partir de laquelle vous souhaitez supprimer les e-mails. Les boîtes aux lettres peuvent être sélectionnées à l'aide de la méthode "Select" de la bibliothèque IMAP.

_, err = conn.Select("INBOX", false)
if err != nil {
    log.Fatal(err)
}
Copier après la connexion

Cinquième étape : Rechercher des messages

Après avoir sélectionné votre boîte aux lettres, vous devez trouver le courrier que vous souhaitez supprimer. Le courrier peut être recherché à l'aide de la méthode "Recherche" de la bibliothèque IMAP. Vous pouvez effectuer une recherche en fonction du sujet de l'e-mail, de l'expéditeur, etc.

// 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)
}
Copier après la connexion

Étape 6 : Marquer le message comme supprimé

Après avoir trouvé le message que vous souhaitez supprimer, vous devez marquer le message comme supprimé. Les messages peuvent être balisés à l'aide de la méthode "Store" de la bibliothèque IMAP. Dans cette méthode, vous devez spécifier le numéro de séquence du message à baliser et le type de balise.

// 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)
}
Copier après la connexion

Étape sept : Supprimer les messages signalés

Enfin, vous devez supprimer les messages signalés. Les messages marqués peuvent être supprimés à l'aide de la méthode « Supprimer » de la bibliothèque IMAP.

// delete mails
if err = conn.Expunge(nil); err != nil {
    log.Fatal(err)
}
Copier après la connexion

Exemple de code complet

Ce qui suit est l'exemple de code complet pour supprimer les e-mails IMAP à l'aide de 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!")
}
Copier après la connexion

Ce qui précède est le processus et l'exemple de code complet pour supprimer les e-mails IMAP à l'aide de Golang.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!