2016-06-17 30 views
1

我正在使用GoLang 1.5寫一個註冊表單。我有這一切工作,但我注意到,如果我嘗試使用帶有加號的電子郵件註冊([email protected]),我收到以下錯誤:GoLang net/smtp sendMail給加號的收件人

交易失敗:非法分號,不在組中

谷歌搜索這並沒有產生太多的結果,似乎Go應該處理加號就好了。

import (
    "net/smtp" 
    "net/mail" 
) 

func sendEmail(t *Email) bool { 
    to := []string{"[email protected]"} 
    err = smtp.SendMail(smtp_url, auth, from_email, to, buff.Bytes()) 
    if err != nil { 
     log.Fatal(err) 
     // outputs: Transaction failed: Illegal semicolon, not in group 
    } 
} 

我很欣賞我對此的任何建議。

謝謝!

+1

該錯誤不是來自您的代碼,您要發送給此服務器的是什麼? – JimB

+0

它使用AWS SES。 – noahtkeller

+1

這不是Go的一個可能的問題。你能確保你的郵件頭在電子郵件中的格式正確嗎? – JimB

回答

1

當且僅當我在郵件正文的To標題中有一個分號時,才能重現此錯誤。例如: -

msg := []byte("To: [email protected];[email protected]\r\nSubject: foo\r\n\r\nbody\r\n") 

仔細檢查To頭你發送,並確保它使用逗號而不是分號分隔多個收件人。

+0

對不起,我花了一段時間纔回復,直到現在,我的注意力從此被拉開。這是正確的答案。 我使用html/template包而不是文本/模板包來呈現電子郵件模板。這是將電子郵件中的+號轉換爲導致錯誤的\t unicode +。使用文本/模板包已解決此問題。謝謝! – noahtkeller

相關問題