googleapi:错误 400:需要收件人地址,无效参数
googleapi: Error 400: Recipient address required, invalidArgument
我正在 运行 按照脚本发送电子邮件。发件人和收件人地址被发件人和收件人替换。
func SendMail() {
b, err := ioutil.ReadFile("credentials.json")
if err != nil {
log.Fatalf("Unable to read client secret file: %v", err)
}
config, err := google.ConfigFromJSON(b, gmail.MailGoogleComScope)
if err != nil {
log.Fatalf("Unable to parse client secret file to config: %v",
err)
}
client := getClient(config)
srv, err := gmail.New(client)
if err != nil {
log.Fatalf("Unable to retrieve Gmail client: %v", err)
}
user := "me"
mailtext := `From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".
`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
var message gmail.Message
message.Id = "Msg 2"
message.LabelIds = []string{"SENT"}
message.Raw = raw
doFunc := srv.Users.Messages.Send(user, &message)
m, err := doFunc.Do()
if err != nil {
println(err.Error())
println("Message not sent")
} else {
fmt.Printf("%+v", m)
}
脚本报如下错误:
googleapi: Error 400: Recipient address required, invalidArgument
环境:macOS Catalina 10.15.7 go1.15.2 darwin/amd64
感谢帮助!!!
我相信你的目标如下。
- 您想使用 googleapis for golang 发送电子邮件。
- 您已经可以使用 Gmail 接收和发送电子邮件 API。
修改点:
- 在你的脚本中,我认为
mailtext
需要修改。在这种情况下,换行符和空格很重要。
- 尽管
raw
已创建,但未放入请求正文。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从:
mailtext := `
From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".
`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
// create gmail.Message
var message gmail.Message
message.Id = "Msg 1"
message.LabelIds = []string{"SENT"}
到:
user := "me"
// Modified
mailtext := `From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
// create gmail.Message
var message gmail.Message
message.Id = "Msg 1"
message.LabelIds = []string{"SENT"}
message.Raw = raw // Added
我认为在这种情况下,Date:
和Message-ID:
可能会被替换为新值。
或者,请修改mailtext
如下。
mailtext := "From: sender@gmail.com\nTo: receiver@gmail.com\nSubject: Saying Hello\nDate: Thu, 8 Oct 2020 09:55:06 -0600\nMessage-ID: <1234@local.machine.example>\n\nThis is a message just to say hello.\nSo, \"Hello\"."
参考:
我正在 运行 按照脚本发送电子邮件。发件人和收件人地址被发件人和收件人替换。
func SendMail() {
b, err := ioutil.ReadFile("credentials.json")
if err != nil {
log.Fatalf("Unable to read client secret file: %v", err)
}
config, err := google.ConfigFromJSON(b, gmail.MailGoogleComScope)
if err != nil {
log.Fatalf("Unable to parse client secret file to config: %v",
err)
}
client := getClient(config)
srv, err := gmail.New(client)
if err != nil {
log.Fatalf("Unable to retrieve Gmail client: %v", err)
}
user := "me"
mailtext := `From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".
`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
var message gmail.Message
message.Id = "Msg 2"
message.LabelIds = []string{"SENT"}
message.Raw = raw
doFunc := srv.Users.Messages.Send(user, &message)
m, err := doFunc.Do()
if err != nil {
println(err.Error())
println("Message not sent")
} else {
fmt.Printf("%+v", m)
}
脚本报如下错误:
googleapi: Error 400: Recipient address required, invalidArgument
环境:macOS Catalina 10.15.7 go1.15.2 darwin/amd64
感谢帮助!!!
我相信你的目标如下。
- 您想使用 googleapis for golang 发送电子邮件。
- 您已经可以使用 Gmail 接收和发送电子邮件 API。
修改点:
- 在你的脚本中,我认为
mailtext
需要修改。在这种情况下,换行符和空格很重要。 - 尽管
raw
已创建,但未放入请求正文。
当以上几点反映到你的脚本中,就会变成下面这样。
修改后的脚本:
从: mailtext := `
From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".
`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
// create gmail.Message
var message gmail.Message
message.Id = "Msg 1"
message.LabelIds = []string{"SENT"}
到:
user := "me"
// Modified
mailtext := `From: sender@gmail.com
To: receiver@gmail.com
Subject: Saying Hello
Date: Thu, 8 Oct 2020 09:55:06 -0600
Message-ID: <1234@local.machine.example>
This is a message just to say hello.
So, "Hello".`
raw := base64.URLEncoding.EncodeToString([]byte(mailtext))
// create gmail.Message
var message gmail.Message
message.Id = "Msg 1"
message.LabelIds = []string{"SENT"}
message.Raw = raw // Added
我认为在这种情况下,
Date:
和Message-ID:
可能会被替换为新值。或者,请修改
mailtext
如下。mailtext := "From: sender@gmail.com\nTo: receiver@gmail.com\nSubject: Saying Hello\nDate: Thu, 8 Oct 2020 09:55:06 -0600\nMessage-ID: <1234@local.machine.example>\n\nThis is a message just to say hello.\nSo, \"Hello\"."