Как отправить письмо через Gmail Go SDK?

Я пытаюсь отправить новое письмо черезGmail пакет Тем не менееСообщение тип, который требуется дляОтправить метод плохо документирован. Кажется, что большинство полей используются для анализа / чтения электронных писем. Единственное поле, которое имеет смысл (в некоторой степени) для метода send, - это Payload типаMessagePart хотя я не могу понять, как сгенерировать MessagePartBody, так как кажется, что это своего рода mime-тип. Ниже приведен код, который у меня есть.

func (em *Email) SendMessage(cl *Client) error {
    config.ClientId = cl.Username
    config.ClientSecret = cl.Password

    t := &oauth.Transport{

        Config:    config,
        Transport: http.DefaultTransport,
    }
    var tk oauth.Token
    err := json.Unmarshal([]byte(cl.Meta), &tk)
    t.Token = &tk
    if err != nil {
        log.Errorf("meta %v, err %v", cl.Meta, err)
        return err
    }
    gmailService, err := gmail.New(t.Client())
    if err != nil {
        log.Error(err)
        return err
    }

    p := gmail.MessagePart{}
    p.Headers = append(p.Headers, &gmail.MessagePartHeader{
        Name:  "From",
        Value: em.FromEmail,
    })
    p.Headers = append(p.Headers, &gmail.MessagePartHeader{
        Name:  "To",
        Value: em.ToEmail,
    })
    p.Headers = append(p.Headers, &gmail.MessagePartHeader{
        Name:  "Subject",
        Value: em.Subject,
    })

    emsg := base64.StdEncoding.EncodeToString(em.Message)
    log.Info(emsg)
    msg := gmail.Message{
        Payload: &p,
        Raw:     "",
    }
    _, err = gmailService.Users.Messages.Send("me", &msg).Do()
    if err != nil {
        log.Error(err)
        return err
    }
    return err
}

Остальные"API еще более запутанно. Это требуетuploadType параметр (WTF для загрузки) иraw поле, которое я предполагаю, является необработанным сообщением, которое требует формат, предоставленный messages.get. Почему вы отправляете сообщение из своего почтового ящика, которое буквально будет «переслано», поскольку вы находитесь в списке получения? Я единственный, кто считает, что этот API (или, по крайней мере, документация) - просто дерьмо?

Ответы на вопрос(1)

Ваш ответ на вопрос