将邮件发送到某个线程失败,即使我设置了标题";在回答「&&引用;参考资料; 环境 戈兰 GmailAPI(google.golang.org/api/gmail/v1) 问题
当我尝试向某个线程发送邮件时,设置了“回复”和“引用”标题,邮件无法附加到该线程 我的问题:你认为这个问题的原因是什么 信头 这里我附上邮件的标题将邮件发送到某个线程失败,即使我设置了标题";在回答「&&引用;参考资料; 环境 戈兰 GmailAPI(google.golang.org/api/gmail/v1) 问题,go,google-api,gmail-api,Go,Google Api,Gmail Api,当我尝试向某个线程发送邮件时,设置了“回复”和“引用”标题,邮件无法附加到该线程 我的问题:你认为这个问题的原因是什么 信头 这里我附上邮件的标题 Received: from 487462728342 named unknown by gmailapi.google.com with HTTPREST; Thu, 19 Nov 2020 22:34:45 -0800 In-Reply-To: <CAMZJxVNx_GfH3mryUr78WD_N6ayz__H3=x7zTocOrWzbo+
Received: from 487462728342 named unknown by gmailapi.google.com with HTTPREST; Thu, 19 Nov 2020 22:34:45 -0800
In-Reply-To: <CAMZJxVNx_GfH3mryUr78WD_N6ayz__H3=x7zTocOrWzbo+kcnA@mail.gmail.com>
References: <CAMZJxVM8vEEeuMzzMUbVirk-Mx554putqNs=HyxikWGPSy-Ayw@mail.gmail.com> <CAMZJxVNx_GfH3mryUr78WD_N6ayz__H3=x7zTocOrWzbo+kcnA@mail.gmail.com>
X-Tracking-Address: hogehoge@gmail.com
Subject: Re: Hello
To: moriwm77@gmail.com
CC: hogehoge@gmail.com
BCC:
Content-Type: multipart/mixed; boundary="===============1605854084=="
Date: Thu, 19 Nov 2020 22:34:45 -0800
Message-Id: <CAMZJxVPX-6dZyNy2cSu3eAUMUZ4p-ai62uOH6=MZY7LYq6O5Lg@mail.gmail.com>
From: moriwm77@gmail.com
--===============1605854084==
Content-Type: text/plain; charset="utf-8"
If...
--===============1605854084==--
“回复”标题和“参考”标题包含在“m.Headers”中。
像
m.Headers[“回复”]
// =>
m、 标题[“参考”]
// =>
根据,如果要向线程添加草稿或消息,必须满足以下条件:
threadId
必须在您随请求提供的消息或草稿中指定
参考
和
主题
标题必须匹配
threadId
,才能成功插入消息
参考文献
// SendMail send gmail.
func (api *GSuiteAPI) SendMail(token *oauth2.Token, m Message) error {
ctx := context.Background()
srv, err := gmail.NewService(ctx, option.WithTokenSource(api.config.TokenSource(ctx, token)))
if err != nil {
return handleError(err)
}
boundary := "===============" + strconv.FormatInt(time.Now().Unix(), 10) + "=="
sMail := []string{}
for key, value := range m.Headers {
sMail = append(sMail, key+": "+value)
}
sMail = append(sMail, "Subject: =?UTF-8?B?"+base64.StdEncoding.EncodeToString([]byte(m.Subject))+"?=")
sMail = append(sMail, "To: "+strings.Join(m.To, ","))
sMail = append(sMail, "CC: "+strings.Join(m.CC, ","))
sMail = append(sMail, "BCC: "+strings.Join(m.BCC, ","))
sMail = append(sMail, "Content-Type: multipart/mixed; boundary=\""+boundary+"\"")
// Boby
sMail = append(sMail, "")
sMail = append(sMail, "--"+boundary)
sMail = append(sMail, "Content-Type: text/plain; charset=\"utf-8\"")
sMail = append(sMail, "")
sMail = append(sMail, m.Body)
log.Info().Msgf("%+v", strings.Join(sMail, "\r\n"))
// Attachment
for _, attachment := range m.Attachments {
name := strings.Replace(attachment.Name, "\"", "", -1)
sMail = append(sMail, "")
sMail = append(sMail, "--"+boundary)
sMail = append(sMail, "Content-Type: application/octet-stream; name=\""+name+"\"")
sMail = append(sMail, "Content-Disposition: attachment; filename=\""+name+"\"")
sMail = append(sMail, "Content-Transfer-Encoding: Base64")
sMail = append(sMail, "")
sMail = append(sMail, attachment.Data)
}
source := strings.Join(sMail, "\r\n")
var message gmail.Message
if api.mailConfig.Enable {
message.Raw = base64.
StdEncoding.
EncodeToString([]byte(source))
_, err = srv.Users.Messages.Send("me", &message).Do()
if err != nil {
return handleError(err)
}
}
return nil
}
m.Headers["In-Reply-To"]
// => <CAMZJxVNx_GfH3mryUr78WD_N6ayz__H3=x7zTocOrWzbo+kcnA@mail.gmail.com>
m.Headers["References"]
// => <CAMZJxVM8vEEeuMzzMUbVirk-Mx554putqNs=HyxikWGPSy-Ayw@mail.gmail.com> <CAMZJxVNx_GfH3mryUr78WD_N6ayz__H3=x7zTocOrWzbo+kcnA@mail.gmail.com>