Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk memadam mel IMAP menggunakan Golang
IMAP ialah protokol rangkaian biasa yang digunakan untuk menghantar dan menerima e-mel. Di Golang, mel boleh dipadamkan dengan mudah menggunakan IMAP. Artikel ini akan memperkenalkan cara memadam e-mel IMAP menggunakan Golang.
Mula-mula, anda perlu mengimport perpustakaan "net/imap" dan "fmt" di Golang. Kod import adalah seperti berikut:
import ( "net/imap" "fmt" )
Seterusnya, anda perlu mewujudkan sambungan dengan pelayan IMAP. Anda perlu memberikan maklumat seperti alamat pelayan, nama pengguna dan kata laluan. Sambungan boleh dibuat menggunakan kaedah "Dail" perpustakaan IMAP.
conn, err := imap.DialTLS(serverAddr, nil) if err != nil { log.Fatal(err) }
Selepas sambungan diwujudkan, anda perlu log masuk ke pelayan IMAP. Anda perlu memberikan maklumat seperti nama pengguna dan kata laluan. Anda boleh log masuk ke pelayan IMAP menggunakan kaedah "Log Masuk" pustaka IMAP.
_, err = conn.Login(username, password) if err != nil { log.Fatal(err) }
Selepas berjaya melog masuk, anda perlu memilih alamat e-mel yang ingin anda padamkan e-mel. Peti mel boleh dipilih menggunakan kaedah "Pilih" pustaka IMAP.
_, err = conn.Select("INBOX", false) if err != nil { log.Fatal(err) }
Selepas memilih peti mel, anda perlu mencari e-mel yang ingin anda padamkan. Mel boleh dicari menggunakan kaedah "Cari" pustaka IMAP. Anda boleh mencari berdasarkan subjek e-mel, penghantar, dsb.
// 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) }
Selepas anda menemui mesej yang ingin anda padamkan, anda perlu menandakan mesej itu sebagai dipadamkan. Mesej boleh ditag menggunakan kaedah "Kedai" pustaka IMAP. Dalam kaedah ini, anda perlu menentukan nombor jujukan mesej yang akan ditanda dan jenis teg.
// 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) }
Akhir sekali, anda perlu memadamkan mesej yang dibenderakan. Mesej yang dibenderakan boleh dipadamkan menggunakan kaedah "Hapuskan" pustaka IMAP.
// delete mails if err = conn.Expunge(nil); err != nil { log.Fatal(err) }
Berikut ialah contoh kod lengkap untuk memadam e-mel IMAP menggunakan 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!") }
Di atas adalah proses dan proses lengkap untuk memadamkan e-mel IMAP menggunakan contoh Kod Golang.
Atas ialah kandungan terperinci Bagaimana untuk memadam mel IMAP menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!