如何通过`exim -t`发送密送电子邮件? [" sendmail看起来很像"模式]

时间:2018-04-22 03:00:12

标签: go centos exim gomail

我使用golang通过以下方法发送带有exim的电子邮件

const sendmail = "/usr/sbin/exim"

func submitMail(m *gomail.Message) (err error) {
    cmd := exec.Command(sendmail, "-t")
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    pw, err := cmd.StdinPipe()
    if err != nil {
        return
    }

    err = cmd.Start()
    if err != nil {
        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 {
            return
        }
    }
    return
}

as Answered on here

问题是Exim用 -t

删除了Bcc
  

如果使用-t选项调用Exim,则从中获取收件人地址   一个消息的标题,它删除任何可能存在的Bcc:标题(之后   提取其地址),除非消息没有To:或Cc:   标题,在这种情况下,没有地址的Bcc:标题留在   消息,符合RFC 822.如果-t不存在   命令行,不删除任何现有的密件抄送:标题。

     

如果调用Exim接收带有收件人地址的邮件   在命令行中给出,并且没有Bcc:,To:或Cc:header   消息,它通常添加一个To:标题,列出收件人。   已知一些邮件列表软件以这种方式提交消息,   在这种情况下,创建To:标头不是想要的。   如果设置了always_bcc选项,则Exim会添加一个空的Bcc:标头   而是在这种情况下。

found in Spec here

1 个答案:

答案 0 :(得分:2)

" Sendmail看起来很像"使用-t的模式会在处理后删除Bcc:标题-t模式Bcc:标题中,内容将附加到(SMTP)收件人列表但是收件人将无法看到/接收Bcc:标题。

样式指南建议: IF 您使用另一个SMTP / MTA软件(例如Exim)" sendmail看起来相似" (命令行可比性模式)那么使用他们提供的sendmail程序/二进制文件 const sendmail = "/usr/sbin/sendmail"