lotus/sendmail/sendmail.go

43 lines
723 B
Go

package sendmail
import (
"github.com/emersion/go-message/mail"
"os/exec"
)
type SendMail struct {
SendMailCommand string `json:"send_mail_command"`
}
type Mail struct {
From *mail.Address
Body []byte
}
var execCommand = exec.Command
func (s *SendMail) Send(mail *Mail) error {
// start sendmail caller
if s.SendMailCommand == "" {
s.SendMailCommand = "/usr/sbin/sendmail"
}
sendMail := execCommand(s.SendMailCommand, "-f", mail.From.Address, "-t")
inPipe, err := sendMail.StdinPipe()
if err != nil {
return err
}
// write message body
_, err = inPipe.Write(mail.Body)
if err != nil {
return err
}
err = inPipe.Close()
if err != nil {
return err
}
// run command
return sendMail.Run()
}