我正在嘗試使用 Go 將電子郵件消息通過(guò)管道發(fā)送到 sendmail 二進(jìn)制文件。如果我沒(méi)有取消對(duì) Wait() 調(diào)用的注釋?zhuān)瑒t以下代碼有效。如果沒(méi)有注釋?zhuān)绦蚓蜁?huì)掛起。閱讀wait的文檔,我覺(jué)得應(yīng)該調(diào)用它,所以我得出結(jié)論,我的示例代碼中存在錯(cuò)誤。關(guān)于它可能是什么的任何建議?package mainimport ( "io" "os" "os/exec" "fmt")func main() { msg := "From: source@email.address\n" msg += "To: recipient@email.address\n" msg += "Subject: Testing\n\n" msg += "Hello World!\n" sendmail := exec.Command("/usr/sbin/sendmail", "-t") stdin, err := sendmail.StdinPipe() if err != nil { panic(err) } sendmail.Stdout = os.Stdout sendmail.Stderr = os.Stderr err = sendmail.Start() if err != nil { panic(err) } io.WriteString(stdin, msg) //err = sendmail.Wait() //if err != nil { // panic(err) //}}
2 回答

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
正在(可能)發(fā)生的是 sendmail 正在等待輸入完成。
要么在寫(xiě)入后關(guān)閉管道,要么(取決于 sendmail 版本和內(nèi)容)嘗試通過(guò) ".\n" 作為消息的最后一部分完成發(fā)送(除了關(guān)閉輸入之外,有些版本會(huì)接受它)。

大話西游666
TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
永遠(yuǎn)永遠(yuǎn)永遠(yuǎn)永遠(yuǎn)不要在這里使用“-t”命令行選項(xiàng)。它會(huì)誤投郵件,就像將郵件從郵件列表發(fā)送回郵件列表一樣。
- 2 回答
- 0 關(guān)注
- 226 瀏覽
添加回答
舉報(bào)
0/150
提交
取消