为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 Gmail Go SDK 发送电子邮件?

如何通过 Gmail Go SDK 发送电子邮件?

Go
暮色呼如 2021-08-10 16:16:22
我正在尝试通过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
提交
取消
意见反馈 帮助中心 APP下载
官方微信