我正在尝试通过gmail包发送一封新电子邮件。但是,send方法所需的Message类型的文档很少。大多数字段似乎用于实际解析/阅读电子邮件。唯一对 send 方法有意义(在某种程度上)的字段是MessagePart类型的 Payload, 尽管我无法弄清楚如何生成 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}“REST” API更令人困惑。它需要一个uploadType参数(要上传的WTF)和一个raw字段,我猜是原始消息,它需要由messages.get提供的格式。您为什么要从收件箱中发送一条消息,这实际上是“重新发送”,因为您在收件列表中?我是唯一一个认为这个 API(或至少是文档)只是垃圾的人吗?
2 回答
- 2 回答
- 0 关注
- 230 浏览
添加回答
举报
0/150
提交
取消