收据地址不会显示在golang smtp客户端发送的电子邮件中

时间:2015-07-14 19:23:03

标签: go smtp

以下是通过本地后缀服务器发送电子邮件的代码段:

from := r.FormValue("from")
to := strings.Split(r.FormValue("to"), ";")
body := r.FormValue("body")
mime := "MIME-version:1.0;\nContent-Type:text/html;charset=\"UTF-8\";\n\n"
subject := fmt.Sprintf("Subject: %s\n", r.FormValue("subject"))
msg := []byte(subject + mime + body)

err := smtp.SendMail("localhost:25", nil, from, to, msg)

电子邮件已发送/收到。但是,它在收到的电子邮件的“收件人”字段中缺少收据地址。我也在交换服务器上尝试过。收据地址也丢失了。以下是它在电子邮件来源中显示的内容。

To: Undisclosed recipients:;

有任何修复建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您正在设置邮件信封的值,但除了Subject:之外,您还没有在电子邮件中添加任何标题。您还应该使用\r\n作为电子邮件的换行符。

最小的例子可能如下:

headers := make(map[string]string)

headers["Subject"] = "this is a test"
headers["From"] = "me@example.com"
headers["To"] = "you@example.com"

body := "hello,\nthis is a test"

var msg bytes.Buffer
for k, v := range headers {
    msg.WriteString(k + ": " + v + "\r\n")
}

msg.WriteString("\r\n")
msg.WriteString(body)

其他一些有用的stdlib包: