如何通过`exim -t`(sendmail兼容模式)发送密送邮件?
在Golang中通过Exim
-t 模式发送带密送(BCC)的邮件 嘿,这个问题其实很好解决!当你用Exim的-t参数(sendmail兼容模式)发邮件时,处理BCC的核心就是正确构造邮件头,剩下的Exim会帮你搞定。
先搞懂exim -t的工作逻辑
-t参数的作用是让Exim从邮件的头信息里自动提取收件人:包括To、CC,还有**BCC**地址。而且它会自动在最终发送给收件人的邮件内容里移除BCC头,保证密送的隐私性——收件人完全看不到谁被密送了。
结合你的Golang代码实现BCC
你的submitMail函数不需要做任何修改!只需要在构造gomail.Message的时候,添加BCC地址就行。用gomail库的SetBcc(或AddBcc)方法最方便:
// 构造带密送的邮件示例 func main() { m := gomail.NewMessage() m.SetHeader("From", "your@domain.com") m.SetHeader("To", "primary-recipient@example.com") m.SetHeader("Cc", "cc-recipient@example.com") // 添加密送地址,可以传多个 m.SetHeader("Bcc", "bcc-first@example.com", "bcc-second@example.com") m.SetHeader("Subject", "测试密送功能") m.SetBody("text/plain", "这是一封通过Exim -t发送的密送邮件") // 调用你写的submitMail函数发送 if err := submitMail(m); err != nil { log.Fatal(err) } }
关键注意事项
- 隐私保障:不用怕BCC头会泄露给收件人,Exim的
-t模式会自动从最终发出的邮件内容里剔除BCC字段,只有Exim后台知道这些密送地址。 - 方法选择:如果需要多次添加BCC地址,用
AddBcc方法(比如m.AddBcc("another-bcc@example.com")),而SetBcc会覆盖之前设置的BCC列表。 - Exim配置:默认情况下Exim是支持BCC的,除非你的服务器有特殊的ACL限制,这种情况需要检查Exim的配置文件。
这样一来,你的代码就能完美支持通过Exim -t发送密送邮件啦!
内容的提问来源于stack exchange,提问作者Garvit Jain
相关产品推荐
相关产品推荐

