Maison  >  Article  >  développement back-end  >  Comment supprimer le courrier IMAP à l'aide de Golang

Comment supprimer le courrier IMAP à l'aide de Golang

PHPz
PHPzoriginal
2023-04-05 10:29:261337parcourir

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"
)

É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)
}

É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)
}

É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)
}

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)
}

É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)
}

É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)
}

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!")
}

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!

Déclaration:
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