dongsi0625 2018-04-22 03:00
浏览 108
已采纳

如何通过`exim -t`发送密件抄送电子邮件? [“相似的发送邮件”模式]

I'm using golang to send email with exim via following method

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

The problem is that Exim removes Bcc with -t

If Exim is called with the -t option, to take recipient addresses from a message's headers, it removes any Bcc: header that may exist (after extracting its addresses), unless the message has no To: or Cc: header, in which case a Bcc: header with no addresses is left in the message, in accordance with RFC 822. If -t is not present on the command line, any existing Bcc: header is not removed.

If Exim is called to receive a message with the recipient addresses given on the command line, and there is no Bcc:, To:, or Cc: header in the message, it normally adds a To: header, listing the recipients. Some mailing list software is known to submit messages in this way, and in this case the creation of a To: header is not what is wanted. If the always_bcc option is set, Exim adds an empty Bcc: header instead in this circumstance.

found in Spec here

  • 写回答

1条回答 默认 最新

  • dougan1205 2018-04-22 08:16
    关注

    "Sendmail look alike" mode with-t removes Bcc: headers after processing them.
    In -t mode Bcc: headers content will be appended to the (SMTP) recipients list BUT recipients will not see/receive Bcc: headers.

    Style guide suggestion: IF you use another SMTP/MTA soft (e.g. Exim) in "sendmail look alike" (command line comparability mode) THEN use sendmail program/binary provided by them.
    const sendmail = "/usr/sbin/sendmail"

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    报告相同问题?

    悬赏问题

    • ¥60 PCDN如何使用宽带的电视业务通道拨号叠加带宽?
    • ¥15 遇到这种校园宽带网络应该怎么样解决?
    • ¥30 AXI VIP验证多余打印问题
    • ¥15 利用加权最小二乘法求某品牌手机价格指标,已按照总销量计算出权重,各类型号手机价格已知,如何求得价格指标?
    • ¥15 如何自制一个硬件钱包,有兴趣的朋友一起交流
    • ¥15 (关键词-聊天软件)
    • ¥15 求大家看看这个编程的编法没有思路啊
    • ¥20 WSL打开图形化程序子窗口无法点击
    • ¥15 Jupyter Notebook 数学公式不渲染
    • ¥20 ERR_CACHE_MISS 确认重新提交表单