I'm currently using "gopkg.in/gomail.v2" to send email with following code found here
package main
import (
"bytes"
"fmt"
"gopkg.in/gomail.v2"
)
func main() {
m := gomail.NewMessage()
m.SetHeader("From", "me@example.com")
m.SetHeader("To", "you@example.com")
m.SetAddressHeader("Bcc", "youbcc@example.com", "Bcc Email")
m.SetHeader("Bcc", "anotherbcc@example.com", "yetbcc@example.com")
m.SetHeader("Reply-To", "me@example.com")
m.SetHeader("Subject", "Subject is to gomail to be discussed")
body := `Why is bcc not getting populated`
m.SetBody("text/html", body)
sendMailViaExim(m)
}
func sendMailViaExim(m *gomail.Message) (err error) {
cmd := exec.Command("/usr/sbin/exim", "-t")
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
pw, err := cmd.StdinPipe()
if err != nil {
log.Println(err)
return
}
err = cmd.Start()
if err != nil {
log.Println(err)
return
}
var errs [3]error
_, errs[0] = m.WriteTo(pw)
errs[1] = pw.Close()
errs[2] = cmd.Wait()
for _, err = range errs {
if err != nil {
log.Println(err)
return
}
}
return
}
The Above code doesn't send to Bcc emails;
So I logged the info that was being passed to exim -t
via following code:
buf := new(bytes.Buffer)
m.WriteTo(buf) //should write entire msg with bcc?
fmt.Println(buf.String())
and the console logged :
$ go run main.go
Mime-Version: 1.0
Date: Mon, 23 Apr 2018 11:15:54 +0530
To: you@example.com
Reply-To: me@example.com
Subject: Subject is to gomail to be discussed
From: me@example.com
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Why is bcc not getting populated
bcc is not getting to the exim -t
How do I achieve that without using smtp.