2016-05-30 182 views
2

我跟着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) 
    } 
} 

請建議缺什麼

+0

你應該嘗試發送彩信的全部內容(包括attachement,適當頭文件)裏面'message.Raw'而不使用'Media()'方法。我有一些成功,但沒有使用正確的標題,所以我不會發布任何工作代碼。 – syntagma

回答