我跟着https://developers.google.com/gmail/api/quickstart/go。我将范围修改为gmail.MailGoogleComScope并尝试发送电子邮件。电子邮件被发送。但是,附件没有发送。它也不会给出任何错误。请注意,对媒体功能的调用是我尝试在gmail API中查看代码,不确定这是否是正确的方式。用gomail发送邮件附带使用gmail API
当我将contentType设置为application/png时,API抛出一个异常消息'png not supported,use message/rfc822'。以下是SendEmail的代码。
func SendEmail(msg EmailMessage) {
ctx := context.Background()
b, err := ioutil.ReadFile("/tmp/client_secret.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(ctx, config)
srv, err := gmail.New(client)
if err != nil {
log.Fatalf("Unable to retrieve gmail Client %v", err)
}
var message gmail.Message
temp := []byte("From: 'me'\r\n" +
"reply-to: [email protected]\r\n" +
"To: " + msg.To + "\r\n" +
"Subject: " + msg.Subject + "\r\n" +
"\r\n" + msg.Body)
message.Raw = base64.StdEncoding.EncodeToString(temp)
message.Raw = strings.Replace(message.Raw, "/", "_", -1)
message.Raw = strings.Replace(message.Raw, "+", "-", -1)
message.Raw = strings.Replace(message.Raw, "=", "", -1)
imgFile, err := os.Open("image.png") // a QR code image
if err != nil {
log.Fatalf("Error in opening file")
}
defer imgFile.Close()
mediaOptions := googleapi.ContentType("message/rfc822")
_, err = srv.Users.Messages.Send("me", &message).Media(imgFile, mediaOptions).Do()
if err != nil {
log.Fatalf("Unable to send. %v", err)
}
}
请建议缺什么
你应该尝试发送彩信的全部内容(包括attachement,适当头文件)里面'message.Raw'而不使用'Media()'方法。我有一些成功,但没有使用正确的标题,所以我不会发布任何工作代码。 – syntagma