Работал ли с IMAP

«Работал ли с IMAP» — вопрос из категории Сети, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал с IMAP в Golang через библиотеку github.com/emersion/go-imap. Пример базового подключения и чтения писем:

package main

import (
    "log"
    "github.com/emersion/go-imap/client"
)

func main() {
    // Подключение к серверу
    c, err := client.DialTLS("imap.example.com:993", nil)
    if err != nil {
        log.Fatal(err)
    }
    defer c.Logout()

    // Авторизация
    if err := c.Login("user@example.com", "password"); err != nil {
        log.Fatal(err)
    }

    // Выбор почтового ящика
    mbox, err := c.Select("INBOX", false)
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("Всего писем: %d", mbox.Messages)
}

Основные операции:

  • Подключение через TLS (IMAPS)
  • Авторизация
  • Выбор почтового ящика
  • Получение списка писем (Fetch)
  • Работа с MIME-структурой писем

Библиотека поддерживает IDLE-режим для получения уведомлений о новых письмах в реальном времени.