I'm trying to use Go to pipe an email message to the sendmail binary. The following code works providing I don't uncomment the call to Wait(). If it's uncommented, the program hangs. Reading the documentation for wait, I get the impression that it should be called so I'm concluding there's an error in my example code. Any suggestions for what it might be?
package main
import (
"io"
"os"
"os/exec"
"fmt"
)
func main() {
msg := "From: source@email.address
"
msg += "To: recipient@email.address
"
msg += "Subject: Testing
"
msg += "Hello World!
"
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)
//}
}