Как отправить письмо через 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 (или, по крайней мере, документация) - просто дерьмо?