2 years ago

#58222

test-img

Brennan

GO Imap constantly get email

I am trying to constantly get emails via go-imap but when i get a new email it doesn't print it just gets the initial 4 emails but doesnt print when a new email is received.

imapClient, erro := client.DialTLS("smtp.gmail.com:993", nil)
    if erro != nil {
        return
    }
    defer imapClient.Logout()
    log.Println("Connected")

    if err := imapClient.Login("email", "password"); err != nil {
        log.Println(err)
    }
    log.Println("Logged in")
    handler.Client = imapClient

    mbox, err := imapClient.Select("INBOX", false)
    if err != nil {
        log.Println(err)
    }
    if mbox.Messages == 0 {
        log.Println("No message in mailbox")
    }
    from := uint32(1)
    to := mbox.Messages
    if mbox.Messages > 3 {
        // We're using unsigned integers here, only subtract if the result is > 0
        from = mbox.Messages - 3
    }
    seqSet := new(imap.SeqSet)
    seqSet.AddRange(from, to)
    messages := make(chan *imap.Message, 10)

    go func() {
        fmt.Println("Fetching messages...")
        err := imapClient.Fetch(seqSet, []imap.FetchItem{imap.FetchEnvelope}, messages)
        if err != nil {
            fmt.Println("Fetch error:", err)
            return
        }
    }()

    for msg := range messages {
        log.Println("* " + msg.Envelope.Subject)
    }

it just prints Fetching messages once and never again so im a bit confused on what todo.

go

imap

0 Answers

Your Answer

Accepted video resources