亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go-smtp,無法通過gmail發送電子郵件,收到EOF

go-smtp,無法通過gmail發送電子郵件,收到EOF

Go
Smart貓小萌 2023-07-04 15:43:17
我正在使用 go-smtp 嘗試向自己發送電子郵件: https: //github.com/emersion/go-smtp    auth := sasl.NewPlainClient("", USERNAME, PASSWORD)    to := []string{USERNAME}    msg := strings.NewReader("To: " + USERNAME + "\r\n" +        "Subject: testing golang go-smtp!\r\n" +        "\r\n" +        "This is the email body.\r\n")    err := smtp.SendMail(SERVER_HOST + ":" + SERVER_PORT, auth, USERNAME, to, msg)    if err != nil {        log.Fatal(err)    }輸出為:EOF 退出狀態 1我正在連接到 smtp.gmail.com:465 并且可以通過 Thunderbird 發送電子郵件。感謝您的幫助。沃爾特
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

請查看此處的“配置選項”部分https://support.google.com/a/answer/176600?hl=en。它提到 Gmail 在端口 465 上對 SMTP 服務器使用 SSL,對端口 587 使用 TLS。要解決您的問題,您可以使用端口 587,因為該函數在內部進行調用,smtp.SendMail()使用net.Dial()純 TCP 來發送郵件流量,并調用在此過程中稍后啟動 STARTTLS。

如果您想使用端口 465,這里有一個很好的示例,適用于使用 SSL 發送電子郵件。

https://gist.github.com/chrisgillis/10888032

正如上面鏈接中提到的,這兩種方法之間的主要區別在于,在 SSL 中,TLS 連接從一開始就建立,而如果您使用端口 587,則連接通過純 TCP 啟動,無需加密。


查看完整回答
反對 回復 2023-07-04
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

我也遇到了這個問題,go-smtp SendMail 在客戶端問候中使用“localhost”。我相信 gmail 服務器可以拒絕“EHLO localhost”作為可能的 DOS 攻擊。在內部,您會看到 EHLO 的第一個錯誤響應是“稍后重試”,然后是 EHLO 重試時的 EOF。使用更獨特的名稱來表示客戶端問候,似乎不會被拒絕。但是,這意味著您不能依賴預設的“SendMail”功能來中繼 smtp.gmail.com



查看完整回答
反對 回復 2023-07-04
  • 2 回答
  • 0 關注
  • 942 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號