Maison > Article > développement back-end > Comment supprimer le courrier IMAP à l'aide de Golang
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.
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" )
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) }
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) }
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) }
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) }
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) }
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) }
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!