Junior — Middle
Vai jums ir pieredze ar IMAP protokola izmantošanu, strādājot ar pasta kastēm?
sobes.tech AI
Atbilde no AI
Jā, strādājot ar pasta kastēm, bieži tiek izmantots IMAP (Internet Message Access Protocol) protokols, lai piekļūtu ziņojumiem serverī bez to lejupielādes. Go valodā ir vairākas bibliotēkas, piemēram, go-imap, kas ļauj savienoties ar IMAP serveri, autentificēties, iegūt ziņojumu sarakstu, lasīt to saturu, marķēt ziņojumus utt.
Piemērs vienkāršai savienošanai un ziņojumu saraksta iegūšanai, izmantojot go-imap:
package main
import (
"log"
"github.com/emersion/go-imap/client"
"github.com/emersion/go-imap"
)
func main() {
// Savienojums ar IMAP serveri
c, err := client.DialTLS("imap.piemers.com:993", nil)
if err != nil {
log.Fatal(err)
}
defer c.Logout()
// Autentifikācija
if err := c.Login("lietotajs", "parole"); err != nil {
log.Fatal(err)
}
// Izvēlēties INBOX
mbox, err := c.Select("INBOX", false)
if err != nil {
log.Fatal(err)
}
// Iegūt pēdējos 10 ziņojumus
from := uint32(1)
to := mbox.Messages
if mbox.Messages > 10 {
from = mbox.Messages - 9
}
seqset := new(imap.SeqSet)
seqset.AddRange(from, to)
ziņojumi := make(chan *imap.Message, 10)
pabeigšana := make(chan error, 1)
go func() {
pabeigšana <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, ziņojumi)
}()
for ziņojums := range ziņojumi {
log.Println("Temats:", ziņojums.Envelope.Subject)
}
if err := <-pabeigšana; err != nil {
log.Fatal(err)
}
}
Šis piemērs ļauj efektīvi strādāt ar e-pastu IMAP protokola līmenī.