Junior — Middle
Da li imate iskustva sa IMAP protokolom prilikom rada sa poštanskim sanducima?
sobes.tech АИ
Одговор од АИ
Da, prilikom rada sa poštanskim sandučetom, često se koristi IMAP (Internet Message Access Protocol) protokol za pristup porukama na serveru bez potrebe za preuzimanjem. U Go jeziku, postoji nekoliko biblioteka, na primer go-imap, koje omogućavaju povezivanje sa IMAP serverom, autentifikaciju, dobijanje liste poruka, čitanje sadržaja, označavanje poruka itd.
Primer jednostavnog povezivanja i dobijanja liste poruka koristeći go-imap:
package main
import (
"log"
"github.com/emersion/go-imap/client"
"github.com/emersion/go-imap"
)
func main() {
// Povezivanje sa IMAP serverom
c, err := client.DialTLS("imap.primer.com:993", nil)
if err != nil {
log.Fatal(err)
}
defer c.Logout()
// Autentifikacija
if err := c.Login("korisnik", "lozinka"); err != nil {
log.Fatal(err)
}
// Izbor INBOX foldera
mbox, err := c.Select("INBOX", false)
if err != nil {
log.Fatal(err)
}
// Dobijanje poslednjih 10 poruka
from := uint32(1)
to := mbox.Messages
if mbox.Messages > 10 {
from = mbox.Messages - 9
}
seqset := new(imap.SeqSet)
seqset.AddRange(from, to)
messages := make(chan *imap.Message, 10)
done := make(chan error, 1)
go func() {
done <- c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope}, messages)
}()
for msg := range messages {
log.Println("Subject:", msg.Envelope.Subject)
}
if err := <-done; err != nil {
log.Fatal(err)
}
}
Ovaj primer omogućava efikasno rad sa poštom na nivou IMAP protokola.