Как отправить электронную почту bcc через exim -t? [режим похожего на sendmail]

Я использую 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
}

как ответ здесь

Проблема в том, что Exim удаляет Bcc с помощью -t

Если Exim вызывается с опцией -t, чтобы взять адреса получателей из заголовков сообщения, он удаляет любой заголовок Bcc:, который может существовать (после извлечения его адресов), если только сообщение не имеет заголовка To: или Cc:, и в этом случае в сообщении остается заголовок Bcc: без адресов в соответствии с RFC 822. Если -t отсутствует в командной строке, любой существующий заголовок Bcc: не удаляется.

Если exim вызывается для получения сообщения с адресами получателей, указанными в командной строке, и в сообщении нет заголовка Bcc :, To: или Cc:, он обычно добавляет заголовок To:, перечисляя получателей. Известно, что некоторые программы списков рассылки отправляют сообщения таким образом, и в этом случае создание заголовка To: не является тем, что нужно. Если установлена ​​опция always_bcc, Exim добавляет вместо этого пустой заголовок Bcc :.

можно найти в спецификации здесь


person Garvit Jain    schedule 22.04.2018    source источник
comment
Зачем нужен флаг -t, почему его просто не убрать?   -  person rofls    schedule 22.04.2018


Ответы (1)


В режиме «Sendmail look alike» с-t удаляются Bcc: заголовки после их обработки.
В режиме -t Bcc: заголовки добавляются к списку получателей (SMTP) НО получатели будут не видит / не получает Bcc: заголовков.

Рекомендации по стилю: ЕСЛИ вы используете другую программу SMTP / MTA (например, Exim) в «похожем на sendmail» (режим сопоставимости командной строки) ТО используйте предоставленную ими программу / двоичный файл sendmail.
const sendmail = "/usr/sbin/sendmail"

person AnFi    schedule 22.04.2018
comment
Я не получаю письма на адреса электронной почты bcc, возможно, проблема в коде golang - person Garvit Jain; 23.04.2018
comment
Да, проблема в коде go _, errs[0] = m.WriteTo(pw) не отправляет bcc в exim - person Garvit Jain; 23.04.2018